剪切命令的问题

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