如何打印除最后 2 列之外的所有列?

use*_*504 1 shell awk

如何打印除最后 2 列之外的所有列?

例如

input :echo FB_SYS_0032_I03_LTO3_idaen02r_02_20130820_181008
output : FB_SYS_0032_I03_LTO3_idaen02r_02
delimiter : _ (underscore)
Run Code Online (Sandbox Code Playgroud)

Ken*_*ent 5

对于你的例子,这个 awk one liner 应该做:

awk -F'_' -v OFS='_' 'NF-=2' file
Run Code Online (Sandbox Code Playgroud)

测试:

kent$  awk -F'_' -v OFS='_' 'NF-=2' <<< "FB_SYS_0032_I03_LTO3_idaen02r_02_20130820_181008"
FB_SYS_0032_I03_LTO3_idaen02r_02
Run Code Online (Sandbox Code Playgroud)

  • 在 OSX 上,您需要添加 `$1=$1` 来强制 awk 重新计算该行。`NF-=2{$1=$1;print}` (@anubhava) (2认同)