Shell中怎么删除文本比较长的行

2022年 10月 17日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

本文主要介绍如何在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中的长行”这篇文章的内容就这么多了。感谢阅读!希望分享的内容对大家有帮助,更多相关知识。欢迎关注本站!

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: