如何在没有管道的情况下同时使用字段分隔符并忽略 awk 中的行?

gal*_*ois 0 pipe awk cut

是否有可能摆脱这一行中的 cut 命令,而不用管道到另一个命令?

awk 'NR > 1 {print l}{l=$2}' filename | cut -d':' -f2


详细信息,如果您想要或需要它们:

[这是一个有趣而不是必要的问题 - 我可以/确实cut像上面那样使用来轻松完成工作]

我能够在忽略文件的最后一行的同时获得第二列NR > 1{print l}{l=$2}

基本上它是一个平面文件数据库(注意非数据内容的最后一行),我需要每个的值field1

$ cat file
1    field1:value1    field2:value2    ...
                   .
                   .
                   .
N    field1:value1    field2:value2    ...
other.parseable info.that is.unnecessary to.me
Run Code Online (Sandbox Code Playgroud)

尝试该-F标志不起作用,因为它似乎更改了列号,因为它首先执行“剪切”:

$ awk -F ':' 'NR > 1 {print l}{l=$2}' file
value1   field2
value1   field2
...
Run Code Online (Sandbox Code Playgroud)

αғs*_*нιη 5

您可以使用split的功能awk

awk '{ split($2, var, /:/ ); print var[2] }'
Run Code Online (Sandbox Code Playgroud)

或者使用多个分隔符:

awk -F'[ :]+' '{print $3}'
Run Code Online (Sandbox Code Playgroud)