使用sed保留行的开头

使用sed保留行的开头,sed,Sed,我有一个文件,其中有些行以a> 对于这些行,并且只有这些行,我想保留前11个字符 如何使用sed实现这一点? 或者其他更好的方法 谢谢 Muriel让我们从这个测试文件开始: $ cat file line one with something or other >1234567890abc other line in file 要仅保留以>开头的行的前11个字符,同时保留所有其他行: $ sed -r '/^>/ s/(.{11}).*/\1/' file line one wi

我有一个文件,其中有些行以a> 对于这些行,并且只有这些行,我想保留前11个字符

如何使用sed实现这一点? 或者其他更好的方法

谢谢


Muriel

让我们从这个测试文件开始:

$ cat file
line one with something or other
>1234567890abc
other line in file
要仅保留以
>
开头的行的前11个字符,同时保留所有其他行:

$ sed -r '/^>/ s/(.{11}).*/\1/' file
line one with something or other
>1234567890
other line in file
$ sed -rn '/^>/ s/(.{11}).*/\1/p' file
>1234567890
要仅保留以
>
开头的行的前11个字符并删除所有其他行,请执行以下操作:

$ sed -r '/^>/ s/(.{11}).*/\1/' file
line one with something or other
>1234567890
other line in file
$ sed -rn '/^>/ s/(.{11}).*/\1/p' file
>1234567890
以上内容已通过GNU sed进行了测试。对于BSD sed,将
-r
选项替换为
-E

说明:

  • /^>/
    是一种条件。这意味着后面的命令仅适用于以

  • s/(.{11})。*/\1/
    是一个替换命令。它仅用前11个字符替换整行

  • -r
    打开扩展正则表达式格式,消除了对某些转义字符的需要

  • -n
    关闭自动打印。当
    -n
    生效时,只有当我们明确要求打印行时,才打印行。在上面的第二种情况下,这是通过在替换命令之后添加
    p
    来完成的

其他形式: 以及:


其他线路呢?你想保留它们还是丢弃它们?太棒了!!谢谢你的解释!!