我有一个 txt 文件,其中有类似的记录
cat,bdb awq,sdcsidsjo hhhd
xs,dun,hat ase, xsdfc
xd,yu,nor acc,cuiov dfvgf
我只想输出下面的单词(空格后的第二列)。
awq
ase
acc
awk '{print $2}'
我尝试了诸如、awk 'BEGIN {print $2} { FS="," }'
、 之类的命令awk '{print $2 FS=","}'
,awk 'BEGIN{ORS=",";} {print $2}'
但没有任何效果,任何人都可以知道如何获取它。
我在第一列中编辑了问题,如果我使用 awk 'BEGIN { FS="," } {print $2}',则其中有逗号
我得到的结果是 bdb dun yu
但我希望结果显示为 awq ase acc
任何人都可以知道如何得到结果。
答案1
(更新了更新的问题)
看起来您想提取空格后的第一个单词,直到下一个逗号。
$ awk -F ' ' '{ split($2,a,","); print a[1] }' <file
awq
ase
acc
这将数据视为空格分隔,然后采用第二个空格分隔字段并用逗号显式分割它,并打印该结果的第一个结果字符串。
或者,使用sed
:
$ sed 's/^[^ ]* //; s/,.*$//' <file
awq
ase
acc
这使用两次替换来首先删除第一个空格之前的位,然后删除逗号中的位。打印剩余的字符串。
答案2
Command: for i in `echo "cbdb awq,sdcsidsjo hhhd xsdunh ase, xsdfc xdyun acc,cuiov dfvgf" | awk -F "," '{print $1,$2,$3}'`; do echo $i | awk '/^a/{print $0}'; done|tr "\n" " "
输入
cbdb awq,sdcsidsjo hhhd xsdunh ase, xsdfc xdyun acc,cuiov dfvgf
输出
命令
for i in `echo "cbdb awq,sdcsidsjo hhhd xsdunh ase, xsdfc xdyun acc,cuiov dfvgf" | awk -F "," '{print $1,$2,$3}'`; do echo $i | awk '/^a/{print $0}'; done|tr "\n" " "
输出
awq ase acc