【问题标题】:awk : print two Fields with seperate numberawk :打印两个具有不同编号的字段
【发布时间】:2018-07-24 14:46:06
【问题描述】:

我是 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


【解决方案1】:

如果您的实际 Input_file 与所示示例相同,那么关注 awk 可能会对您有所帮助。

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

解释:

-F'[ /_.]'-Fawk 中用于设置行的分隔符。所以在这里我们将(space),/,_. 设置为提到(通过)Input_file 的任何行的字段分隔符。

print $1,$(NF-2),$(NF-1):使用awk 的开箱即用命令print 打印然后$1 提到当前行的第一个字段值,$(NF-2) 提到当前行的倒数第三个字段值@987654335 @ 表示当前行的倒数第二个字段值。

【讨论】:

  • 它提供了所需的输出..稍作修改
  • awk -F'[/_.]' '{print $1,$(NF-2),$(NF-1)}'
【解决方案2】:

你可以试试这个:

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

【讨论】:

    猜你喜欢
    • 2017-08-12
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多