如何使用shell脚本将多行开始使用模式转换为单行

时间:2013-11-04 06:42:05

标签: linux shell grep

我想要做的是我想将多行以一个模式开头添加到单行中,例如

test.txt包含

name: test1
role: manager
mail: test1@mail.com
name:test2
role: analyst
name:test3

我想grep从“名字”开始,以“名字”结尾,但并非所有“名字”都以“邮件”结尾,有些则没有“邮件”

期望的输出:

name: test1 role: manager mail: test1@mail.com
name:test2 role: analyst
name:test3 

1 个答案:

答案 0 :(得分:0)

正确的工具是awk。我不确定是否可以使用grep

完成此操作
awk '{printf (/^name/?RS:FS)"%s",$0}' test.txt

name: test1 role: manager mail: test1@mail.com
name:test2 role: analyst
name:test3

gnu awk版本(由于记录分隔符中的多个字符)

awk 'NF{$1=$1;print RS,$0}' RS="name:" test.txt
name: test1 role: manager mail: test1@mail.com
name: test2 role: analyst
name: test3