有条件地删除少于 4 个字符的行

Jan*_*t D 0 bash sed awk text-processing

我想修剪少于 4 个字符的行,除非该行以#or开头!

样本输入:

aa
bbb
 
   
dasasdsad
! f
#
!
# s
a
&B@*!
Run Code Online (Sandbox Code Playgroud)

输出:

dasasdsad
! f
#
!
# s
&B@*!
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 7

grep

< file.in grep -E '^[#!]|.{4}' > file.out
Run Code Online (Sandbox Code Playgroud)

即,选择线,要么与启动#!或含有4个字符的序列。

或与awk

< file.in awk '/^[#!]/ || length >= 4' > file.out
Run Code Online (Sandbox Code Playgroud)

或与sed

< file.in sed -e '/^[#!]/b' -e '/.\{4\}/!d' > file.out
Run Code Online (Sandbox Code Playgroud)