sed命令删除包含10个以上字符且不以91开头的行

sed命令删除包含10个以上字符且不以91开头的行,sed,Sed,我希望sed命令删除一行,其中包含10个以上的数字,并且不是以91开头 我的文件内容是这样的 919876543210 789876543210 9012345678 12345678901 9865746321 需要这样的输出 919876543210 9012345678 9865746321 我试过awk'length>=4'1.txt | grep-v^91 这会告诉我 789876543210 12345678901 您可以做什么: 忽略所有以“91”开头的行,/^91/ 否则

我希望sed命令删除一行,其中包含10个以上的数字,并且不是以91开头

我的文件内容是这样的

919876543210
789876543210
9012345678
12345678901
9865746321
需要这样的输出

919876543210
9012345678
9865746321
我试过awk'length>=4'1.txt | grep-v^91

这会告诉我

789876543210
12345678901
您可以做什么:

  • 忽略所有以“91”开头的行,
    /^91/
  • 否则,请删除至少包含11个字符的内容
    (假设您不关心数字、字母、空格之间的差异…,
    {/../d}
总共:

sed  '/^91/!{/.........../d}'
有了
-E
,这将更加优雅


(我的sed是GNU sed版本4.2.1)

简单、清晰、便携、高效等,带有awk:

$ awk '/^91/ || length()<11' file
919876543210
9012345678
9865746321

$awk'/^91/| | length()如果您没有显示您尝试过的任何内容,StackOverflow系统建议您将问题向下投票,然后继续。是否可以将
-E
用于您的sed版本?sed版本4.2.2如果没有真正回答问题,则sed有不同的来源。