awk:跳过行数,在剩下的行上应用脚本

  • 本文关键字:脚本 应用 awk awk
  • 更新时间 :
  • 英文 :


如何跳过前7行(行(并在其余行上应用脚本?我尝试了下面的脚本,但不幸的是,它删除了文件中的所有内容,使其变为空。

awk 'NR > 7 { $1="XD"$1}' file> temp && mv temp file

你离目标不远了。只需将1附加到脚本中(这将导致打印$0(:

awk 'NR > 7 { $1="XD"$1} 1' file> temp && mv temp file

跳过的行数

使用next语句跳过行

在剩余上应用脚本

您的脚本确实会更改字段值,但不会printit

file.txt内容为

1 10 100
2 20 200
3 30 300
4 40 400
5 50 500
6 60 600
7 70 700
8 80 800
9 90 900

然后

awk 'NR<=7{next}{$1="XD"$1;print}' file.txt

给出输出

XD8 80 800
XD9 90 900

观察具有next的模式动作对在其他动作之前。

(在gawk 4.2.1中测试(

完全参数化的基于awk的解决方案::

  1. #行跳过"__"
  2. 准备"___"的字符串
gawk '(__<NR) *  ($_=___$_)^_' FS='^$' __=7 ___='XD'  # gawk/nawk
mawk '(__<NR) * ($!_=___$_)^_' FS='^$' __=7 ___='XD'  # any mawk

最新更新