shell替换和去掉换行符

用shell处理文件的时候我们常常需要去掉或者加上换行符,name问题就来了怎么才能快速的替换呢?

我们有这样一个文件

[[email protected] working]# cat 1
GD200A16C013493,GD200A16C013494,GD200A16C013495,GD200A16C013497

我们需要把逗号去掉,换成换行符可以这样做

[[email protected] working]# cat 1|sed ‘s/,/\n/g‘
GD200A16C013493
GD200A16C013494
GD200A16C013495
GD200A16C013497

但是我们反过来了呢?就是把下面的换行替换为用逗号分开,sed反过来用就不行了,

[[email protected] working]# cat 1|sed ‘s/,/\n/g‘|sed ‘s/\n/,/g‘
GD200A16C013493
GD200A16C013494
GD200A16C013495
GD200A16C013497

我们可用awk来做用也行,如下:

cat 1|sed ‘s/,/\n/g‘|awk ‘{{printf"%s,",$0}}‘
GD200A16C013493,GD200A16C013494,GD200A16C013495,GD200A16C013497

这里也可以用tr来处理,但是te来处理的话还需要手动删除最后一个逗号如下:

[[email protected] working]# cat 1|sed ‘s/,/\n/g‘|tr -s ‘\n‘ ‘,‘
GD200A16C013493,GD200A16C013494,GD200A16C013495,GD200A16C013497,[[email protected] working]#
[[email protected] working]# cat 1|sed ‘s/,/\n/g‘|tr -t ‘\n‘ ‘,‘
GD200A16C013493,GD200A16C013494,GD200A16C013495,GD200A16C013497,[[email protected] working]#
[[email protected] working]# cat 1|sed ‘s/,/\n/g‘|tr ‘\n‘ ‘,‘
GD200A16C013493,GD200A16C013494,GD200A16C013495,GD200A16C013497,[[email protected] working]#
时间: 2024-12-12 04:03:18

shell替换和去掉换行符的相关文章

python 按每行读取文件怎么去掉换行符

python按每行读取文件后,会在每行末尾带上换行符,这样非常不方便后续业务处理逻辑,需要去掉每行的换行符,怎么去掉呢?看下面的案例: >>> a = "hello world\n" >>> print a #可以看到hello world下面空了一格 hello world >>> a.split() #通过split方法将字符转换成列表 ['hello', 'world'] #从列表中取第一个字符 >>> a.

shell脚本报错换行符syntax error near unexpected token \r

有时候一些windows下处理不当的sh脚本文件放到linux下执行报错, 提示存在换行符,原因主要就是window下EOL行结束是"\r\n"两个字符, 而linux,unix下是"\n"单字符. 以下vim命令做确认 :e ++ff=unix %    #显示回车符(\r), 具体的在vim环境中会显示为 "^M"符号 :set list    #显示换行符(\n), 具体的再vim环境下回显示为 "$" 符号. 此命令同

fgets()函数读取键盘,去掉换行符或丢弃多余的字符

在上一遍随笔中,我们知道可以用fgets()函数来代替不安全的gets()函数.fgets函数中的第二个参数限制了读取的个数. 上篇文章也提到,fgets是会读取回车换行符的.有时候我们并不希望在字符串中存在换行符.有的时候我们在一行中多输入了几个字符,而这几个字符并不是我们想要的.这时可以写一个小程序解决这个问题 下面看程序(来自于C Primer Plus 第六版):该程序的功能是:读取输入行,删除存在字符串中的换行符,如果没有换行符,则丢弃数组装不下的字符. #include <stdio

mysql 替换回车,换行符

REPLACE(REPLACE(code_temp,CHAR(13),""),CHAR(10),"");  char(10):  换行符  char(13):  回车符

python实现readline去掉换行符\n

刚刚用python的readline(s)读取文件的发现进行后续处理的时候总是会出现格式上等的一些小错误,后来想起来是因为文件换行符等一些符号(\n\r\t)也会被readline(s)读取到,以下是我用到的小方法 举个栗子吧,以下是我的文件内容: In [1]: cat /tmp/ip.txt 111.231.0.0/16 122.152.0.0/16 140.143.0.0/16 59.110.0.0/16 106.75.0.0/16 将文件读到变量 f 中,然后执行redline发现其实里

python实现readline去掉换行符\n等特殊字符

刚刚用python的readline(s)读取文件的发现进行后续处理的时候总是会出现格式上等的一些小错误,后来想起来是因为文件换行符等一些符号(\n\r\t)也会被readline(s)读取到,以下是我用到的小方法 举个栗子吧,以下是我的文件内容: In [1]: cat /tmp/ip.txt 111.231.0.0/16 122.152.0.0/16 140.143.0.0/16 59.110.0.0/16 106.75.0.0/16 将文件读到变量 f 中,然后执行redline发现其实里

PHP替换数据库的换行符

//php 有三种方法来解决 //1.使用str_replace 来替换换行 $str = str_replace(array("\r\n", "\r", "\n"), "", $str); //2.使用正则替换 $str = preg_replace('//s*/', '', $str); //3.使用php定义好的变量 (建议使用) $str = str_replace(PHP_EOL, '', $str);

WinForm------TextEdit控件去掉换行符

//将换行转为空格 string str = this.DetailEdit.Text.Replace("\r\n"," ");

[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读取一行时,会先把换行符去