shell – 如何查找连续的空行并将其转换为空行
发布时间:2020-12-16 01:50:52 所属栏目:安全 来源:网络整理
导读:我有一个文件 – 一个,并且存在一些继续空行(多个),见下文: cat a12345 所以首先我想知道是否存在继续空行,我试过了 cat a | grep 'nnn' 没什么输出.所以我必须使用以下方式 vi a :set list/nnn 所以我想知道是否存在其他shell命令可以轻松实现这个?
我有一个文件 – 一个,并且存在一些继续空行(多个),见下文:
cat a 1 2 3 4 5 所以首先我想知道是否存在继续空行,我试过了 cat a | grep 'nnn' 没什么输出.所以我必须使用以下方式 vi a :set list /nnn 所以我想知道是否存在其他shell命令可以轻松实现这个? 1 2 3 4 5 起初我试过下面的shell sed 's/nn(n)*/nn/g' a 它不起作用,然后我尝试了这个shell cat a | tr 'n' '$' | sed 's/$$($)*/$$/g' | tr '$' 'n' 这次它有效.而且我想知道是否存在其他方式可以实现这一点? 解决方法
好吧,如果你的cat实现支持
-s,--squeeze-blank suppress repeated empty output lines 那就简单了 $cat -s a 1 2 3 4 5 此外,编号行的-s和-n也可能在命令较少的情况下可用. 注释:不会抑制仅包含空格的行. 如果你的猫不支持-s那么你可以使用: awk 'NF||p; {p=NF}' 或者如果你想在每条记录后保证一个空行,包括在输出结尾,即使输入中没有,那么: awk -v RS= -v ORS='nn' '1' 如果您的输入包含所有空白行的行,并且您希望它们被视为非空白行(如cat -s,请参阅下面的注释),然后: awk '/./||p; {p=/./}' 并保证输出结尾处有一个空行: awk '/./||p; {p=/./} END{if (p) print ""}' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |