awk:打印两个单独编号的字段

awk:打印两个单独编号的字段,awk,Awk,我是unix新手,需要一些帮助 我有一个包含以下内容的文件: 119000 ABC/CSD/NEW/PB/PB1234_PB0001123.CSV 60000 ABC/CSD/NEW/PB/PB14567_PB0001123.CSV 25000 ABC/CSD/NEW/PB/VV/PB16734_PB0001123.CSV 80000 ABC/CSD/NEW/PB/VV/PB2314_PB09820123.CSV 33117 ABC/CSD/NEW/PB/VV/PB45634_PB0001123

我是unix新手,需要一些帮助

我有一个包含以下内容的文件:

119000 ABC/CSD/NEW/PB/PB1234_PB0001123.CSV
60000 ABC/CSD/NEW/PB/PB14567_PB0001123.CSV
25000 ABC/CSD/NEW/PB/VV/PB16734_PB0001123.CSV
80000 ABC/CSD/NEW/PB/VV/PB2314_PB09820123.CSV
33117 ABC/CSD/NEW/PB/VV/PB45634_PB0001123.CSV
我希望输出像:

119000 PB1234  PB0001123
60000 PB14567 PB0001123 
25000 PB16734 PB0001123 
80000 PB2314  PB09820123 
33117 PB45634 PB0001123 
按第二个字段排序,然后按第三个字段排序…

您可以尝试以下方法:

awk '{
       split($2,a,"/")              # Split the 2nd element into the array a
       split(a[length(a)],b,"[_.]") # Split the last element of the array into the array b
       print $1,b[1],b[2]           # Print the wanted string
    }' file
您可以尝试以下方法:

awk '{
       split($2,a,"/")              # Split the 2nd element into the array a
       split(a[length(a)],b,"[_.]") # Split the last element of the array into the array b
       print $1,b[1],b[2]           # Print the wanted string
    }' file

如果您的实际输入文件与示例中所示的相同,那么下面的awk可能会在相同的方面对您有所帮助

awk -F'[ /_.]' '{print $1,$(NF-2),$(NF-1)}'  Input_file
说明:

-F'[/.]':-F在awk中用于设置行的分隔符。所以我们在这里设置空间,/,u和。作为所提及的已传递输入文件的任何行的字段分隔符


打印$1、$NF-2、$NF-1:使用awk名为print的开箱即用命令打印,然后$1表示当前行的第一个字段值,$NF-2表示当前行的第三个最后一个字段值$NF-1表示当前行的第二个最后一个字段值。

如果您的实际输入文件与所示示例相同,那么下面的awk可能会在相同方面帮助您

awk -F'[ /_.]' '{print $1,$(NF-2),$(NF-1)}'  Input_file
说明:

-F'[/.]':-F在awk中用于设置行的分隔符。所以我们在这里设置空间,/,u和。作为所提及的已传递输入文件的任何行的字段分隔符


打印$1、$NF-2、$NF-1:使用awk名为print的开箱即用命令打印,然后$1表示当前行的第一个字段值,$NF-2表示当前行的第三个最后一个字段值$NF-1表示当前行的第二个最后一个字段值。

请添加您试图质疑的内容。。。另请参见,创建一个排序会产生差异的示例。。。给定ip/op的顺序相同。请同时添加您试图提问的内容。。。另请参见,创建一个排序会产生差异的示例。。。给定ip/op的顺序相同..它提供了所需的输出..只需稍加修改wk-F'[/.]''''''{print$1,$NF-2,$NF-1}'@Vikakmis,欢迎您,请看这个如何在SO中感谢某人:它提供了所需的输出..稍加修改wk-F'[/.]'{print$1,$NF-2,$NF-1}'@Vikakmis,欢迎您,请看这个如何在SO中感谢某人: