Sed 搜索正则表达式模式并删除具有上述模式的行
Sed to search regex pattern and remove line with above pattern
这是我的 file.txt 内容。在这里,我尝试使用以下命令搜索模式 text: 'About'
并删除 items:[{
行:
file.txt:
items: [{
text: 'About',
handler: function() { TP.aboutWindow() }
命令:
sed -n -i -E '/text\: \'About\'/{n; $p; x; d}; x; 1!p; ${x;p;}' file.txt
但它似乎不起作用。有什么方法可以删除模式上方的线吗?
提前致谢。
如果您对 awk
没问题,请您尝试在此处使用 awk
+ tac
组合。这将在终端上打印输出,一旦您对结果感到满意,您也可以在以下命令的最后附加 > temp && mv temp Input_file
。
tac Input_file |
awk '
found && /items:/{
found=""
next
}
/text: 7About7/{
found=1
}
1' |
tac
您可以使用
sed -i "N;/\n.*text: 'About'/"'!P;D' file.txt
详情:
-i
- 文件就地替换模式开启
N
- 在整个文件中打开两行 window(它读取下一行以换行符开头的模式 space)
\n.*text: 'About'
匹配换行符,然后是任何文本,然后是 text: 'About'
!P;D
- 如果匹配,则不打印第一行,然后删除第一行并重复。
这是我的 file.txt 内容。在这里,我尝试使用以下命令搜索模式 text: 'About'
并删除 items:[{
行:
file.txt:
items: [{
text: 'About',
handler: function() { TP.aboutWindow() }
命令:
sed -n -i -E '/text\: \'About\'/{n; $p; x; d}; x; 1!p; ${x;p;}' file.txt
但它似乎不起作用。有什么方法可以删除模式上方的线吗?
提前致谢。
如果您对 awk
没问题,请您尝试在此处使用 awk
+ tac
组合。这将在终端上打印输出,一旦您对结果感到满意,您也可以在以下命令的最后附加 > temp && mv temp Input_file
。
tac Input_file |
awk '
found && /items:/{
found=""
next
}
/text: 7About7/{
found=1
}
1' |
tac
您可以使用
sed -i "N;/\n.*text: 'About'/"'!P;D' file.txt
详情:
-i
- 文件就地替换模式开启N
- 在整个文件中打开两行 window(它读取下一行以换行符开头的模式 space)\n.*text: 'About'
匹配换行符,然后是任何文本,然后是text: 'About'
!P;D
- 如果匹配,则不打印第一行,然后删除第一行并重复。