我希望 AWK 处理我的文件,并且只更改一些行。但它只打印规则匹配的行。所以我添加了一条/*/ {print $0}
规则。但后来我有一个重复。
awk '/rule 1/ {actions 1;} /*/ {print $0}' file.txt
我希望输出中的所有行都更改了“规则 1”行。
我希望 AWK 处理我的文件,并且只更改一些行。但它只打印规则匹配的行。所以我添加了一条/*/ {print $0}
规则。但后来我有一个重复。
awk '/rule 1/ {actions 1;} /*/ {print $0}' file.txt
我希望输出中的所有行都更改了“规则 1”行。
在脚本末尾添加a 1
,强制awk
返回true,这具有默认启用打印所有行的效果。例如,以下将打印文件中的所有行。但是,如果该行包含单词rule 1
,则只会打印该行的第一个字段。
awk '/rule 1/ { print $1; next }1' file
该单词next
跳过处理该特定行的其余代码。您可以应用您想要的任何操作。我只是选择了print $1
。HTH。
按照 Ed Norton 的最新解释,我将做一个大的编辑。
正如 Ed Morton 所指出的,它甚至可以简化为:用特定图案改变线条,然后打印所有线条
awk '/regex1/ {actions_1} 1' file.txt
(请参阅下面的评论,了解为什么它比我提出的更可取)
为了记录,有一些方法可以跳过当前行的其余处理,例如 :continue
或者break
它是否在循环中,或者next
它是否在主循环中。
参见例如:http ://www.gnu.org/software/gawk/manual/html_node/Next-Statement.html#Next-Statement
或者将动作 1 的结果赋值给 $0:
awk '/rule 1/{$0=actions 1}1' file.txt
例如:
awk '/rule 1/{$0=$1}1' file.txt