将名称添加到 sed 命令的输出中

Add the name to the output of the sed command

我想对一个文件执行命令 sed 并将结果放入多个文件

Ex 输入文件

test_1
step 1
...
result
step 2
...
result
step 3
...
result
test end
....
test_2
step 1
...
result
step 2
...
result
test end

我正在使用以下命令获取 "test X" 和 "test end"

之间的行
sed -n "/test/,/test end/p" input.txt > output

我想将这个命令的结果输出到新文件中, 本示例的名称为 test_1.txt、test_2.txt。 文件内容将是

test_1.txt

    test_1
    step 1
    ...
    result
    step 2
    ...
    result
    step 3
    ...
    result
    test end

test_2.txt

test_2
step 1
...
result
step 2
...
result
test end

你可以使用 awk 做到这一点:

awk '/test/{f=1;++file}/test end/{f=0}f{print > "test_" file}' input

当/test/匹配时,设置f为真并递增file。当匹配到/test end/时,设置f为false。当 f 为真时,将该行打印到名称包含变量 file.

值的文件