我是shell脚本的初学者,我需要运行一个命令,从文件中获取第一列(基于分隔符〜)。该命令的输出列出了新行中的所有名称,然后我需要将其转换为以逗号分隔的列表。以下是命令:
FILES=`cat 'testfile.txt' | grep 'teststring' |
awk -F~ '{print $1}'| sed 's/\n/\,/g' | awk '{print;}'`
运行它会在新行中打印文件的内容,但我不会以逗号分隔最终的o / p。有人可以帮助我吗?
答案 0 :(得分:1)
您可以使用
FILES=`awk -v RS='~' -v ORS=, '/teststring/' 'testfile.txt' `
~
作为记录分隔符,将~
的输入拆分为不同的行 /teststring/
代替grep {print $0}
可以省略($0
是行,我们从~
拆分得到),因为它是默认操作ORS
(输出记录分隔符)设置为,
,我们得到逗号分隔输出答案 1 :(得分:0)
paste
是将换行符转换为逗号的好工具:
files=$(awk -F~ '/teststring/ {print $1}' testfile.txt | paste -s -d,)
不要使用ALLCAPSVARNAMES,它很容易践踏shell变量并破坏你的脚本