本文主要介绍如何在Shell中删除长行,非常详细,有一定的参考价值。有兴趣的朋友一定要看!
Shell中如何删除文本比较长的行的实现方法
有时需要删除文件。这时常用vi命令中的dd命令,比如10G(跳转到第10行),然后是20dd(删除第20行)。但是,实际情况未必如此套路。例如,如果要删除一个文件中长度超过200个字符的一行,如果文本比较小,那就可以了,如果是几万行或者几十万行。想用vi是不现实的。我想到的方式是:比如通过sed,awk,egrep命令来达到目的。举个简单的例子。
假设下面的文本文件,删除长度超过5个字符的。
root@linux#catdata
一个
22
333
4444
55555
666666
7777777
88888888方法一: 使用awk命令的length()函数
root @ Linux # catdata | awk“{ if(length($ 0)=4)print $ 0 }”
一个
22
333
4444方法二: 使用grep命令
root@linux#catdata|egrep-w'^.{1,4}'
一个
22
333
4444方法三: 使用sed命令
root@linux#catdata|sed-n'/^.{5,}/!' wNewFile '
root@linux#catNewFile
一个
22
333
4444备注:
1.使用awk,grep命令时,可以将处理过的文件重定向到另一个新文件
2.参数,这意味着单词只匹配模式
3.表示以任何字符开始的一行。这与-w命令配合使用。这很关键,否则就找不到了
4.w!指示所有模式都不匹配,w是输出,写入新文件新文件
“如何删除Shell中的长行”这篇文章的内容就这么多了。感谢阅读!希望分享的内容对大家有帮助,更多相关知识。欢迎关注本站!