【问题标题】:regex - match a word and replace content before it正则表达式 - 匹配一个单词并替换它之前的内容
【发布时间】:2013-08-06 21:26:35
【问题描述】:

我有几个文件与这一行:

<2-10 digits> ; word

我想用其他东西替换该单词之前的所有数字。我该怎么做?

【问题讨论】:

  • 请告诉我们您使用哪种语言/工具进行正则表达式。
  • 抱歉,我正在尝试在 bash for 循环中使用 sed 之类的简单方法。
  • 您能否提供一些示例输入和预期输出。
  • 当然。我有多个文件,每个文件都有特定的行。我想同时编辑所有文件以更新数字字段。
  • 我在下面提供了一个 sed 示例。如果要保存更改的文件,可以使用sed -i 选项。

标签: regex bash sed awk match


【解决方案1】:
 sed -i -e 's/.*word/something;word/g' <filename>

遍历目录中的多个文件。我假设 .txt 文件作为文件扩展名:

for i in `\ls -1 *.txt`
  do
    sed -i -e 's/.*word/something;word/g' $i
done

注意:sed -i 会以交互方式修改文件。因此,请测试不带-i 选项的命令,以检查这是您想要的,然后继续执行...

【讨论】:

    【解决方案2】:

    更新: sed 示例:

    s="999 abc 1234 ; word 567"
    echo $s | sed 's/^\(.* \)[0-9][0-9]*\( ; word.*\)$/\1something\2/g'
    

    输出:

    999 abc something ; word 567
    

    【讨论】:

      猜你喜欢
      • 2014-03-14
      • 1970-01-01
      • 2011-10-15
      • 2016-01-16
      • 2019-11-12
      • 1970-01-01
      • 2014-12-30
      相关资源
      最近更新 更多