如何在文件的某些行下添加新的字符串/行,在BASH中整个文件中包含多行相同的行?

时间:2019-03-22 12:02:41

标签: bash shell parsing scripting

我正在编写bash脚本。那么,如何在文件的某些行下添加新的字符串/行,在BASH中整个文件中包含多行相同的文本? 例如,文件可能包含:

line 1
line 2a
line 3
line 4
line 2a
Line 5
line 6
line 2a
line 7
line 8

是否可以仅在line 2a之后的line4下添加另一个字符串,而忽略其他line 2a?我已经用sed尝试过了,但是每line 2a都会添加一个波纹管。

这是我尝试过的(也正在使用OSX):

sed -i.bak "/^$line/a \ 
    $entry" $file_path && rm "$file_path.bak"

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以在脚本中使用sed

> sed -E 's/^line 2a$/\0\n/' < file
line 1
line 2a

line 3
line 4
line 2a

Line 5
line 6
line 2a

line 7
line 8

答案 1 :(得分:1)

这将对您提供的示例数据起到作用:

20.03.2019 11:15:00.012 DEBUG [sling-threadpool-15f9e0b4-a24d-4b0d-bf4a-433ec604e41d-(apache-sling-job-thread-pool)-27-<main queue>(com/some/Service)] org.apache.sling.event.jobs.audit START OK : 2019/3/20/11/15/bb92b672-1b0d-4fe8-bf5e-9194a934f249_49