【发布时间】:2021-09-30 12:48:00
【问题描述】:
grep -A 4 -B 3 "ABCD" file.txt | sed -i.bak 's/^/#/g'
我正在使用上面的代码插入带有# 的搜索模式的第一行。 我需要根据一种搜索模式替换多行。 这些内容必须在同一文件中替换(替换),否则新文件也应包含原始内容。
以下是输入文件的预期输出示例。
假设file.txt的内容是-
PQRS
1
2
3
4
ABCD
1
2
3
4
WXYZ
1
2
3
4
ABCD
1
2
3
4
预期输出是 -
PQRS
1
#2
#3
#4
#ABCD
#1
#2
#3
#4
WXYZ
1
#2
#3
#4
#ABCD
#1
#2
#3
#4
这里有任何想法。 有没有一种巧妙的方法可以做到这一点,而不是使用 perl 或任何其他脚本循环和移动文件指针。
【问题讨论】:
-
只是为了确保我理解,您想在模式前的 3 行、模式之后的 4 行和模式线本身前面加上
#?
标签: linux shell sed scripting grep