美文网首页Linux学习与应用技巧Linux
sed如何替换\n(换行符)

sed如何替换\n(换行符)

作者: TOP生物信息 | 来源:发表于2019-08-28 23:19 被阅读0次
0. 场景
$ cat test_1.txt 
##Peppa_Pig
#name
Peppa   6
George  3
Susy    6

有一批文件,格式同上,现在需要在第二行加上"age"字符串,并与前一个字段用制表符"\t"分隔。

1. awk

awk其实很好实现

$ awk '{if($0 ~ /^#name/) print $0"\tage"}{if($0 !~ /^#name/) print $0}' test.txt 
##Peppa_Pig
#name   age
Peppa   6
George  3
Susy    6
2. sed
$ sed '2a ###age' test.txt 
##Peppa_Pig
#name
###age
Peppa   6
George  3
Susy    6

$ sed '2a ###age' test.txt | sed 's/\n###/\t/g'
##Peppa_Pig
#name
###age
Peppa   6
George  3
Susy    6

这里3个#的作用是保证唯一性,具体是什么符号不重要。可以看出来,第二个替换没有成功,原因就是含有\n。这和sed的作用原理有关,sed处理文本的步骤是:通过\n识别多行文本的每一行,去掉\n做处理,添加\n,输出。在做处理的时候,已经没有\n了。
如果在处理的时候,\n仍然存在,并且是对整个文本文件处理(不是一行一行,能跨行),这个问题就解决了。

$ sed '2a ###age' test.txt | sed ':label;N;s/\n###/\t/;b label'
##Peppa_Pig
#name   age
Peppa   6
George  3
Susy    6

:label;表示一个标签,结合后面的b label(跳转指令)实现跳转
N;表示追加文本流中的下一行模式空间进行合并处理
b label或者t label表示sed的跳转命令,跳转到指定的标签处

label的作用类似C语言中的goto,先定义一个标签,然后在其他地方可以goto到标签代码的地方重新执行

3. tr

tr只能实现单个字符的替换

参考

https://my.oschina.net/shelllife/blog/118337
https://blog.csdn.net/napolunyishi/article/details/22185673
http://www.bubuko.com/infodetail-1655818.html

相关文章

  • sed如何替换\n(换行符)

    0. 场景 有一批文件,格式同上,现在需要在第二行加上"age"字符串,并与前一个字段用制表符"\t"分隔。 1....

  • 2019-11-15 linux的替换:sed -i "s/查找

    sed -i "s/查找字段/替换字段/g" 例如:test.txt包括: a;bc;d 使用命令把;替换成换行符...

  • 软件应用方法之【notepadqq】2019-08-08

    本文内容:使用notepadqq,把可见字符替换为\n等不可见字符。 示例文本样式如下,我们看如何把\n(换行符)...

  • sed 后面的g

    sed 后面的g可以替换为1 2 3 4.。。表示对第几个字符进行替换 sed前面如果是替换\n是替换不了的,需要...

  • Linux命令之sed批量替换字符串操作

    Linux中sed命令功能强大,本文将详细介绍如何使用sed命令进行字符串替换。一、基本的替换命令格式1:sed ...

  • Sed命令详解+如何替换换行符

    基础用法详解 (1)第一行之后添加一行 (2)第一行之前添加一行 (3)删除第2,3行 (4)打印第2,3行 这里...

  • Emacs去掉行尾的^M

    之所以出现^M是因为文件中使用的是window下的换行符(\r\n)去掉方法,也就是替换成linux的换行符(\n)。

  • tr与sed命令:将换行符替换为空格

    处理文本时需要将换行符替换为空格,若使用sed命令会比较麻烦,而使用tr命令非常方便。 输入文本(country....

  • sed与awk

    sed 选项 动作 filename 选项-n 动作: a 新增往下增加 i 往上一行添加 c 替换,...

  • sed

    正则表达式 – 如何使sed删除行不匹配替换

网友评论

    本文标题:sed如何替换\n(换行符)

    本文链接:https://www.haomeiwen.com/subject/zjhvectx.html