【问题标题】:Using SED with no options? sed 's#.*/##' [duplicate]在没有选项的情况下使用 SED? sed 's#.*/##' [重复]
【发布时间】:2021-02-16 16:54:09
【问题描述】:

我有一个我想要理解的命令。主要问题是 SED 命令不符合我以前见过的任何示例。我不明白为什么

find . -name *_<templateName>_*|sed 's#.*/##' > wc_uDriveFiles<monYYYY>.txt 

【问题讨论】:

  • 示例通常使用 / 作为分隔符,但您可以使用任何字符。在您的示例中,分隔符是#。因此,您的 sed 命令将替换内容,后跟斜杠(实际上将其删除)
  • @Jerry 说得通。非常感谢!
  • 请注意,当且仅当没有传递其他脚本(通过 -e(脚本文本)或 -f(脚本文件))时,第一个非选项参数被视为脚本文本。这些天手册页非常好。
  • 注意:如果要匹配包含/ 的行,可以使用sed '/\//' filesed '\#/#' file。第二个示例将正则表达式分隔符更改为#,即更改正则表达式地址的分隔符,在该字符前面加上\ ,例如sed '\@/@' file 也将匹配 /

标签: linux bash shell unix sed


【解决方案1】:

sed 的s 命令执行搜索和替换。 以下字母(此处为 #)分隔 patternreplacementoptions。 请注意,正则表达式模式是贪婪的。

一个例子应该阐明它是如何工作的

$ cat file.txt
abc
ab/c
a/b/c

$ sed 's#.*/##' file.txt
abc
c
c

因此,直到并包括最后一个斜线的文本(如果有)都将被删除

【讨论】:

    猜你喜欢
    • 2013-04-28
    • 2016-03-19
    • 2014-05-31
    • 2014-09-02
    • 2013-03-08
    • 1970-01-01
    • 2016-02-27
    • 2013-06-06
    • 2019-05-12
    相关资源
    最近更新 更多