我有一个文件,其中的字段由多个字符分隔。对于Ex:
abc sometext def;ghi=123;
abc sometext def;ghi=123;
abc sometext def;ghi=123;
现在我想在AWK中解析文件以提取字段。例如,获取'ghi'的所有值,
awk '{print $3}' | awk 'BEGIN {FS = "="} { print $NF }' inputFile.txt
有没有办法一次解析文件而不是使用多个管道和AWK命令。
答案 0 :(得分:2)
是的,您可以使用split
awk
功能
awk '{split($3,a,"=");print a[2]}'
123;
123;
123;
这将使用3
作为分隔符的nr =
归档为数组a
,然后打印数组a[2]
的第二个值
如果第3号字段中的字段有变化,而您喜欢最后一个字段,请执行以下操作:
awk '{n=split($3,a,"=");print a[n]}'
123;
123;
123;
在你的情况下,这也会这样做:
awk -F= '{print $NF}'
答案 1 :(得分:1)
这也可以使用awk
中的多个字段分隔符来完成:
$ awk -F"[=;]" '{print $3}' file
123
123
123
这会告诉awk
使用字段分隔符=
或;
。基于此,您想要的数字位于第3位。
如果您希望ghi
部分可以更改且重要,那么您也可以将grep
与后卫一起使用:
$ grep -Po '(?<=ghi=)\d+' file
123
123
123
这将打印ghi=
之后的所有数字。