【问题标题】:sed: just trying to remove a substringsed:只是试图删除一个子字符串
【发布时间】:2012-01-11 12:28:14
【问题描述】:

我有一个包含以下内容的文件:

foo: bar1
foo: bar2
foo: bar3
foo: bar4
foo: bar5

我想删除链“foo: ”以便文件保留:

bar1
bar2
bar3
...

我正在尝试:

$ sed 's/foo: /' file.txt

但它说:

sed: -e 表达式 #1, char 15: 未终止的 `s' 命令

有什么帮助吗?

贾维

【问题讨论】:

    标签: linux shell sed


    【解决方案1】:

    你需要:

    $ sed -r 's/^foo: //' file.txt
    

    【讨论】:

    • 如果文件只有以上内容,sed 's/.*;//' file.txt不够吗?
    • @poton 是的,那样也可以。恕我直言,不过,最好更具体一些。你永远不知道,对吧?
    • -r 在这种情况下不是必需的,并且在 sed 的某些版本中不可用。
    【解决方案2】:

    你的file

    [jaypal:~/Temp] cat file
    foo: bar1
    foo: bar2
    foo: bar3
    foo: bar4
    foo: bar5
    

    使用awk:

    [jaypal:~/Temp] awk -F";" '{print $NF}' file
    bar1
    bar2
    bar3
    bar4
    bar5
    

    使用sed

    [jaypal:~/Temp] sed 's/.*;//' file
    bar1
    bar2
    bar3
    bar4
    bar5
    

    使用cut

    [jaypal:~/Temp] cut -d";" -f2 file
    bar1
    bar2
    bar3
    bar4
    bar5
    

    【讨论】:

      【解决方案3】:

      对于这个简单的任务,您可以使用cut

       cut -b 11- INPUTFILE
      

      HTH

      【讨论】:

        【解决方案4】:
        awk -F';' '{print $2}' file
        

        grep -Po '(?<=&nbsp;).*$' file
        

        【讨论】:

          【解决方案5】:

          使用 sed 剥离子字符串然后复制到粘贴缓冲区的实际示例 (linux)
          扫描 linux 上的 Autohotkey 配置文件(遗憾的是没有用于 linux 的 autohotkey)。 '::' 在 AHK 中用作分隔符

          grep -Eie "xxx::" AutoHotkey.ahk | sed 's/^.*:://' | xclip
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-04-09
            • 1970-01-01
            • 1970-01-01
            • 2017-05-28
            • 1970-01-01
            • 2019-04-22
            • 1970-01-01
            • 2021-10-14
            相关资源
            最近更新 更多