sed空格替换成回车_如何使用sed替换换行符(\ n)?

30秒到达战场

快速回答:sed ':a;N;$!ba;s/\n/ /g' file: 创建标签'a'N 将下一行附加到模式空间$! 如果不是最后一行,ba 分支(转到)标签'a's 替换,/ \ n / 正则表达式为新行,// 由空格,/ g 全局匹配(尽可能多次)sed将遍历步骤1到3,直到到达最后一行,让所有行都适合模式空间,其中sed将替换所有\ n个字符替代方案:与sed不同,所有替代方案都不需要到达最后一行来开始该过程用bash,慢while read line; do printf "%s" "$line "; done 

  sed 's/\n/foo\n/' file  # to add a word to the end of each line永远不会工作,因为在将行放入模式空间之前删除了尾随换行符。要执行上述任务,请改为使用以下脚本之一:  tr -d '\n' 

  sed ':a;N;$!ba;s/\n//g' file   # GNU sed to delete newlines             

  sed 's/$/ foo/' file           # add "foo" to end of each line由于除了GNU sed之外的sed版本对模式缓冲区的大小有限制,因此Unix'tr'实用程序在这里是首选。如果文件的最后一行包含换行符,GNU sed会将该换行符添加到输出中但删除所有其他换行符,而tr将删除所有换行符。要匹配两行或更多行的块,有3种基本选择:(1)使用'N'命令将Next行添加到模式空间; (2)使用'H'命令至少两次将当前行追加到Hold空间,然后用x,g或G 从保留空间中检索行; 或(3)使用地址范围(见上文第3.3节)来匹配两个指定地址之间的行。选择(1)和(2)将\ n放入模式空间,可以根据需要对其进行寻址('s / ABC \ nXYZ / alphabet / g')。使用“N”删除行块的一个示例显示在4.13节(“如何删除特定连续行的块?”)中。可以通过将delete命令更改为其他内容来修改此示例,例如'p'(打印),'i'(插入),'c'(更改),'a'(追加)或's'(替换) 。选择(3)不会将\ n放入模式空间,但它确实匹配连续行的块,因此您可能甚至不需要\ n来找到您要查找的内容。由于GNU sed 版本3.02.80现在支持这种语法:  sed '/start/,+4d'  # to delete "start" plus the next 4 lines,除了传统的'/ from here /,/ to there / {...}'范围地址之外,还可以完全避免使用\ n。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值