AWK 中的字段分隔符

AWK 中的字段分隔符

我有一个 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

相关内容