1

我有一个文件,其字段由多个字符分隔。例如:

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 命令。

4

2 回答 2

2

是的,您可以splitawk

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}'
于 2013-11-04T08:31:52.837 回答
1

这也可以使用多个字段分隔符来完成awk

$ awk -F"[=;]" '{print $3}' file
123
123
123

这告诉awk使用字段分隔符=;. 基于此,您想要的数字位于第三位。

如果您希望该ghi部分是可变的且重要的,您还可以使用grep后视:

$ grep -Po '(?<=ghi=)\d+' file
123
123
123

这将打印 . 之后的所有数字ghi=

于 2013-11-04T09:19:02.520 回答