剪切命令的问题
Issue with cut command
我在使用剪切命令时遇到问题,
这是原始文件的示例:
userid1:john doe smith:group1
userid2:jane doe smith:group2
userid3:paul rudd :group2
预期结果:
userid1
userid2
userid3
测试命令:
#!/bin/bash
clear
id=`id -u`
if [ $id -eq 0 ]
for i in `cat users.txt`
do
userid=`echo $i|cut -d":" -f1`
echo "$userid" >>temp.txt
`chmod 777 temp.txt`
done
这给了我这个输出:
userid1
doe
smith
userid2
doe
smith
userid3
rudd
如果我删除姓名和姓氏之间的 space,它就可以工作,并且我指定“:”作为分隔符,不知道我遗漏了什么。
怎样才能得到预期的结果?
干杯。
更新:修复了将 for 循环更改为 while...read。
问题出在您的 bash 脚本上。
for i in `cat users.txt`
上面一行用空格分割了你的文本。只要做:
cut -d":" -f1 < users.txt >>temp.txt
chmod 777 temp.txt
如果出于某种原因你 bash 单独处理每一行(可能是因为你需要对 userid 做一些事情而不是仅仅输出它),你可以使用 read
如下:
while read i
do
userid=`echo $i|cut -d":" -f1`
echo "$userid" >>temp.txt
chmod 777 temp.txt
done < users.txt
我在使用剪切命令时遇到问题,
这是原始文件的示例:
userid1:john doe smith:group1
userid2:jane doe smith:group2
userid3:paul rudd :group2
预期结果:
userid1
userid2
userid3
测试命令:
#!/bin/bash
clear
id=`id -u`
if [ $id -eq 0 ]
for i in `cat users.txt`
do
userid=`echo $i|cut -d":" -f1`
echo "$userid" >>temp.txt
`chmod 777 temp.txt`
done
这给了我这个输出:
userid1
doe
smith
userid2
doe
smith
userid3
rudd
如果我删除姓名和姓氏之间的 space,它就可以工作,并且我指定“:”作为分隔符,不知道我遗漏了什么。
怎样才能得到预期的结果?
干杯。
更新:修复了将 for 循环更改为 while...read。
问题出在您的 bash 脚本上。
for i in `cat users.txt`
上面一行用空格分割了你的文本。只要做:
cut -d":" -f1 < users.txt >>temp.txt
chmod 777 temp.txt
如果出于某种原因你 bash 单独处理每一行(可能是因为你需要对 userid 做一些事情而不是仅仅输出它),你可以使用 read
如下:
while read i
do
userid=`echo $i|cut -d":" -f1`
echo "$userid" >>temp.txt
chmod 777 temp.txt
done < users.txt