gpt4 book ai didi

awk - sed 匹配模式并打印模式前的两行以及直到文件末尾的所有行

转载 作者:行者123 更新时间:2023-12-05 09:01:46 25 4
gpt4 key购买 nike

示例

tyu
abc

def
ghi
fgg
yui

输出

abc

def
ghi
fgg
yui

匹配模式:^def在包含模式的匹配行之前打印两行,并在模式之后打印所有行直到结束

最佳答案

第一个解决方案:使用您显示的示例,请尝试遵循 awk代码,在 GNU 中编写和测试 awk .

awk -v RS='(^|\n)def.*' '
RT{
num=split($0,arr,ORS)
sub(/\n$/,"",RT)
print arr[num-1] ORS arr[num] RT
}
' Input_file


第二个解决方案(更通用的一个): 在这个解决方案中,可以提到在 awk 中找到匹配项之前需要打印的行数的变量名为 lines我们不需要硬编码我们需要打印数组元素的次数(在第一行的 split 函数中)。

awk -v lines="2" -v RS='(^|\n)def.*' '
RT{
val=""
num=split($0,arr,ORS)
sub(/\n$/,"",RT)
for(i=lines;i<=num;i++){
val=(val?val ORS:"") arr[i]
}
print val RT
}
' Input_file

关于awk - sed 匹配模式并打印模式前的两行以及直到文件末尾的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72612931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com