将字段'N'打印到行尾

jia*_*mao 2 unix linux awk cut gawk

我想对我在awk中遇到的问题提供帮助或指导.

我有一个包含超过5个字段的制表符分隔文件.我想输出除前5个字段之外的字段.

你能告诉我如何写一个awk脚本来完成这个任务吗?

最好的,jianfeng.mao

请注意以下类型的评论:

我的文件中有很多字段.不同的行具有不同数量的字段.每行的字段数不是标准的.

mat*_*hew 5

在我的制表符分隔文件中,temp.txt它看起来如下所示

field1 field2 field3 field4 field5 field6
field1 field2 field3 field4 field5 field6 field7
field1 field2 field3 field4 field5 field6 field7 field 8

根据您的更新,我强烈建议您使用cut:

cut -f6- temp.txt
Run Code Online (Sandbox Code Playgroud)

将field6打印到行尾.

注意-d指定分隔符,但tab是默认分隔符.你可以这样做awk,但我觉得cut更简单.

有了awk它看起来是这样的:

 awk '{print substr($0, index($0, $6))}' temp.txt
Run Code Online (Sandbox Code Playgroud)

如果我的制表符分隔文件temp.txt如下所示

field1 field2 field3 field4 field5 field6
field1 field2 field3 field4 field5 field6 field7
field1 field2 field3 field4 field5 field6 field7 field 8

awk -F"\t" '{print $6}' temp.txt
Run Code Online (Sandbox Code Playgroud)

将仅打印第6个字段.如果分隔符是制表符,它可能会在没有设置-F的情况下工作,但我喜欢在可以的时候设置我的字段分隔符.

同样也会减少.

cut -f6 temp.txt
Run Code Online (Sandbox Code Playgroud)

我有预感你的问题比这更复杂,所以如果你回复我的评论,我可以尝试扩展我的答案.