sed 删除换行符

sed ‘:label;N;s/\n/:/;b label‘ filename

sed ‘:label;N;s/\n/:/;t label‘ filename

上面的两条命令可以实现将文件中的所有换行符替换为指定的字串,如命令中的冒号。命令的解释:

  • :label;  这是一个标签,用来实现跳转处理,名字可以随便取(label),后面的b label就是跳转指令
  • N;  N是sed的一个处理命令,追加文本流中的下一行到模式空间进行合并处理,因此是换行符可见
  • s/\n/:/;   s是sed的替换命令,将换行符替换为冒号
  • b label  或者 t label    b / t 是sed的跳转命令,跳转到指定的标签处

标签跳转和N的追加命令实现了每一行的不间断放入模式处理空间,从而不会漏掉每一个换行符,而没有标签的话跳转的话,就只能每两行替换掉一个换行符,对比效果:

echo "a,b,c,d" |sed ‘s/,/\n/g‘|sed ‘:x;N;s/\n/,/;b x‘

echo "a,b,c,d" |sed ‘s/,/\n/g‘|sed ‘N;s/\n/,/‘

sed  -n ‘/Region/p‘  source.json | sed ‘s/^\s*"\w*"://‘ | sed ‘s/"},//‘|sed ‘s/"}]//‘|sed ‘s/"//‘|sed ‘N;s/,\n/\t/‘

时间: 2024-08-28 22:21:53

sed 删除换行符的相关文章

linux 删除换行符

今天需要删除文件里面的换行符,比如有一个文件a.txt: 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1.使用vim删除换行符 vim输入命令:%s/\n//g 2.使用sed命令,例如 sed ':t;N;s/\n//;b t' a.txt 结果:1,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,6 解释一下: :t 定义label "t" b t 转到labe

linux shell 删除换行符(多行内容在一行显示)&删除空行

删除换行符(多行内容在一行显示): 1.sed -e ':a;N;s/\n//;ta' filename 2.在Vi中,使用:%s/\n//g 3.cat filename |xargs echo 和cat filename|xargs 的行为是一样的,xargs默认是打印输出前一条命令的结果,将多行的内容在一行显示,最简单的方法 删除^M符号(CTRL+V,然后CTRL+M) 1.sed -e 's/^M//g' filename 2.在Vi中,使用:%s/^M//g "g"全文替换

Linux删除换行符-

场景:使用nmap结合for循环对文本内的ip进行检测时,发现每行ip后面有个\r的换行符影响shell脚本执行 解决方案:使用vim编辑器做替换: 使用 vim -v file    //打开文件  执行下面的替换命令 :%s/\r// 处理后再次打开如下: 原文地址:http://blog.51cto.com/1inux/2106514

word批量删除换行符

回车符有两种,“硬回车”和“软回车”.硬回车是直接敲键盘上的回车,软回车是按键盘上的“ Shift+回车 ”.   首先,使用快捷键“ Ctrl + H ”替换功能: 如果要替换软回车(垂直向下的箭头),在“查找内容”里面输入^l,如果是替换硬回车(向下再左转的箭头),在“查找内容”里面输入^p,“替换为”里面不输入任何字符,然后点击“全部替换”,就可以删除整个文档里面的软回车或硬回车了. 原文地址:https://www.cnblogs.com/xxyBlogs/p/12550858.html

Linux文件和windows文件在 换行符的区别

Linux或Unix文件,和windows文件,在来回处理时,如果不注意 换行符的区别,可能导致程序错误!!!深刻的教训.... 在早期的打印机时代,开始新的一行要占用两个字符的时间.如果到了一行的结尾处,你要快速回到新的一行的开头,需要打印针头在纸面上飞快地掠过,常常会在纸面上留下污点.解决这个问题的办法就是,用两个字符:一个字符<Return>来移到第一列,另一个字符<Line feed>来新增一行.计算机产生以后,存储较为昂贵,在如何解决回车换行这个老问题上,人们产生了不同的

vim 处理换行符

1. 设置文件格式 :set fileformats=unix,dos 2. 查询当前文件格式 :set fileformat? 3. 转换文件格式 :set fileformat=dos 4. 设置文件结束符 :set endofline 5. 去掉文件结束符 :set noendofline 6. 显示换行 :set list 7. 退出list mode :set nolist 8. 删除换行符 :%s/\n//g 9. 删除dos文件的回车符^M :%s/\r//g

oracle 回车、换行符

1.回车换行符 chr(10)是换行符,chr(13)是回车, 增加换行符 select ' update ' || table_name ||       ' set VALID_STATE =''0A'';'||chr(13)||' commit;'  from user_tables 删除换行符 select id,replace(content,to_char(chr(13))||to_char(chr(10)),'_r_n') from fact_content order by co

vi删除换行

在命令状态下,在某一行上按“J”键将Join下一行 就是说,J合并当前行和下一行 合并多行可以用,重复上一J命令或用nj合并从当前行起的n行 参考: 1,vi中,如何删除换行符?即,如何使两行连接为一行? http://bbs.chinaunix.net/thread-248620-1-1.html

[Z] sed命令替换换行符

sed命令替换换行符 sed流编辑器是shell中处理文本内容的一大利器.sed命令从文本流中读取一行文本到模式空间中进行相应的命令.或脚本处理,因此在处理换行符时会有点特殊. 下面的命令可以很正确的执行: echo "a,b,c,d" |sed 's/,/\n/g' 但是如果我想恢复回来,下面的命令却没有效果了: echo "a,b,c,d" |sed 's/,/\n/g'|sed 's/\n/,/g' 这跟sed的行处理方式有关,sed读取一行时,会先把换行符去