我正在编写sed脚本,它将以-字符结尾的相邻文本行合并到下一行,如果它前面没有白色字符(空格、制表符)的话。
我有一个脚本,正是这样做,但它没有过滤正确。
我的剧本
#!/bin/bash
file=$1
sed ':a;/-$/{N;s/-\n//;ba}' $file
这是我的文件输入
line1-
line2
line3-
line4
line5 -
line6
这就是我想看到的结果
line1-
line2
line3line4
line5 -
line6
这就是我得到的
line1-
line2
line3line4
line5 line6
4条答案
按热度按时间juzqafwq1#
此
sed
命令应执行以下操作:0lvr5msh2#
您可以使用模式来捕获组中的非空白字符,并在替换中使用该组而不使用标签:
产出
查看sed演示。
6fe3ivhb3#
使用GNU sed:
yshpjwxd4#
这可能对您有用(GNU sed):
追加下一行,如果当前行以非空格字符结尾,后面跟一个
-
,则删除-
和后面的换行符,然后重新执行。否则,打印/删除第一行并重复。