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

时间:2015-01-21 15:34:50

标签: awk sed

我想在文件上执行命令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

1 个答案:

答案 0 :(得分:2)

您可以使用awk执行此操作:

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

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