使用 AWK 删除模式(不包括模式)后的行
delete lines after pattern (excluding pattern) using AWK
我想用 AWK 命令删除模式后的 N 行。
输入file.txt
bla bla
bla bla
pattern
these lines
are not
requires
I want to delete
these...
up to nth line
....
....
需要输出file.txt
bla bla
bla bla
pattern
尝试过的解决方案
awk '/pattern/ {exit} {print}' file.txt
我找到了这个命令 here 但我也需要“模式”。
请帮忙!
一个 awk
动作可以有多个语句,所以这样的事情应该有效:
awk '/pattern/ {print; exit} {print}' file.txt
更简单更短的sed
:
sed '/pattern/q' file
bla bla
bla bla
pattern
你很接近,你只需要先 print
然后 exit
如果模式匹配。让file.txt
内容为
bla bla
bla bla
pattern
these lines
are not
requires
I want to delete
these...
up to nth line
....
....
然后
awk '{print}/pattern/{exit}' file.txt
产出
bla bla
bla bla
pattern
(在 GNU Awk 5.0.1 中测试)
切勿在匹配文本的上下文中使用“模式”一词,因为它非常含糊。例如,这些中的每一个都会从您发布的示例输入中产生预期的输出,但意味着非常不同的东西,并且在给定不同输入的情况下彼此的行为会非常不同,您使用的正确输入取决于您所说的“模式”的含义:
完整的正则表达式匹配:
$ awk '{print} /^pattern$/{exit}' file
bla bla
bla bla
pattern
部分正则表达式匹配:
$ awk '{print} /pattern/{exit}' file
bla bla
bla bla
pattern
完整字符串匹配:
$ awk '{print} [=12=]=="pattern"{exit}' file
bla bla
bla bla
pattern
部分字符串匹配:
$ awk '{print} index([=13=],"pattern"){exit}' file
bla bla
bla bla
pattern
还有其他可能性,具体取决于您是需要单词匹配还是行匹配。参见 。
我想用 AWK 命令删除模式后的 N 行。
输入file.txt
bla bla
bla bla
pattern
these lines
are not
requires
I want to delete
these...
up to nth line
....
....
需要输出file.txt
bla bla
bla bla
pattern
尝试过的解决方案
awk '/pattern/ {exit} {print}' file.txt
我找到了这个命令 here 但我也需要“模式”。 请帮忙!
一个 awk
动作可以有多个语句,所以这样的事情应该有效:
awk '/pattern/ {print; exit} {print}' file.txt
更简单更短的sed
:
sed '/pattern/q' file
bla bla
bla bla
pattern
你很接近,你只需要先 print
然后 exit
如果模式匹配。让file.txt
内容为
bla bla
bla bla
pattern
these lines
are not
requires
I want to delete
these...
up to nth line
....
....
然后
awk '{print}/pattern/{exit}' file.txt
产出
bla bla
bla bla
pattern
(在 GNU Awk 5.0.1 中测试)
切勿在匹配文本的上下文中使用“模式”一词,因为它非常含糊。例如,这些中的每一个都会从您发布的示例输入中产生预期的输出,但意味着非常不同的东西,并且在给定不同输入的情况下彼此的行为会非常不同,您使用的正确输入取决于您所说的“模式”的含义:
完整的正则表达式匹配:
$ awk '{print} /^pattern$/{exit}' file
bla bla
bla bla
pattern
部分正则表达式匹配:
$ awk '{print} /pattern/{exit}' file
bla bla
bla bla
pattern
完整字符串匹配:
$ awk '{print} [=12=]=="pattern"{exit}' file
bla bla
bla bla
pattern
部分字符串匹配:
$ awk '{print} index([=13=],"pattern"){exit}' file
bla bla
bla bla
pattern
还有其他可能性,具体取决于您是需要单词匹配还是行匹配。参见