【问题标题】:Sed find,match and replacesed 查找、匹配和替换
【发布时间】:2012-06-09 18:21:37
【问题描述】:

所以我有以下脚本(只是一个测试)

 #!/bin/bash
 for file in *
 do
 echo $file 
 done

我正在尝试在文件周围添加括号。我还假装我不知道变量文件的全名。

  cat sc.sh | sed 's/fi*/(&)/g'
  #!/bin/bash
  (f)or (fi)le in *
  do
  echo $(fi)le
  done

所以基本上我正在尝试匹配以 fi 开头的单词并在它们周围添加括号。我究竟做错了什么?我尝试了许多变体,但没有奏效。从我可以看到该命令匹配任何 f 或 fi 并在它们周围添加括号,但不是整个单词。为什么?

任何帮助将不胜感激。

【问题讨论】:

    标签: linux sed command


    【解决方案1】:

    您的正则表达式 fi* 正在寻找一个 f 后跟 0 个或多个 i。你可能想要更多这样的东西:

    cat tmp | sed 's/\bfi[^ ]*/(&)/g'
    

    \bfi 查找单词边界(即单词的开头),后跟“fi”。然后[^ ]* 匹配单词中剩余的(非空格)字符。

    【讨论】:

      猜你喜欢
      • 2022-12-11
      • 2020-06-24
      • 2022-01-20
      • 2020-02-03
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      相关资源
      最近更新 更多