吃饭的时候吃饭,睡觉的时候睡觉,工作的时候工作,学习的时候学习......
❝ UNIX/Linux下使用Shell处理文本方法总结 ❞
作者:彭新 日期:2014-05-19 分类:OS 点击: 来源:www.wo81.com

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源,谢谢 !

如下代码已验证,验证系统:SLES 11

文本处理用的工具主要是sed,tr,awk,cut,grep这些命令,所以工作中用到最多的也就是如下一些功能。

1、普通文本替换

将第一个wo81替换成wo81.com,如需替换所有,使用s//g

echo "5555wo819999" | sed 's/wo81/wo81.com/'

echo "5555wo819999" | sed 's/wo81/wo81.com/g'

2、替换的文本中包含/

将文件中test.txt中的/bk/abc.sh 替换成 /backup/dbbk.sh

sed 's#/bk/abc.sh#/backup/dbbk.sh#g' test.txt

3、删除某些字符串或者字符,比如aaa

sed 's/aaa//g' test.txt

cat test.txt | tr -d "aaa"

特例:删除html文件中的<a>标签

sed 's/<a[^>]*>//g;s#</a>##g'  test.html

注:删除其它标签的方法类似,如果整个文件所有html标签都要删除的话,有一个工具更好用:html2text,而且Linux和Windows下的版本都有。

4、删除Windows造成的^M(Ctrl + v + m)字符

方法1:dos2unix  test.txt

方法2:cat test.txt | tr -d "\r"

方法3:vi打开,然后替换::%s/^M//g

方法4:sed 's/\r//'  test.txt

注:windows换行=\r\n(回车、换行),而unix或linux下只有换行\n。

5、删除空行

方法1:grep -v "^$" 将空行排除,然后将标准输出重定向

grep -v "^$" test.txt test2.txt

方法2:使用sed 的d命令将空行删除 ,然后将标准输出重定向

sed '/^$/d'  test.txt > test2.txt

cat test.txt | sed '/^$/d' > test2.txt

方法3:使用awk拆分文本行,找到文本长度不等于0或者是文本不为空的行,将标准输出重定向

awk '{if(length !=0) print $0}'  test.txt > test2.txt

awk '{if($0!=null) print $0}'  test.txt > test2.txt

cat test.txt | awk '{if(length !=0) print $0}'  > test2.txt

cat test.txt | awk '{if($0!=null) print $0}' > test2.txt

方法4:使用tr命令将空行替换成空,将标准输出重定向

cat test.txt | tr -s '\n' > test2.txt

想了解更多,请参考如下内容

cut命令截取字符串总结

sed命令常用操作实例讲解

awk命令常用操作实例讲解

本文链接:UNIX/Linux下使用Shell处理文本方法总结

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源,谢谢 !