我想修剪少于 4 个字符的行,除非该行以#
或开头!
。
输入示例:
aa
bbb
dasasdsad
! f
#
!
# s
a
&B@*!
输出:
dasasdsad
! f
#
!
# s
&B@*!
答案1
和grep
:
< file.in grep -E '^[#!]|.{4}' > file.out
也就是说,选择以#
或开头的行,!
或者包含 4 个字符的序列。
或者与awk
:
< file.in awk '/^[#!]/ || length >= 4' > file.out
或者与sed
:
< file.in sed -e '/^[#!]/b' -e '/.\{4\}/!d' > file.out
答案2
您可以尝试这样的事情,代码未经测试:
while read line;
do
var=$(echo $line | awk '{ print length }')
if [ $var -le 4 ]; then
echo $line >> tmp.file
fi
done < your.file
这是 2 个步骤,在读取时,它将少于 4 个字符的行写入 tmp.file。比较comm -23 your.file tmp.file
两个文件,抑制公共线,这> you.new.file
是最终保存的版本