【问题标题】:Is this a valid shell sed command and what does it do?这是一个有效的 shell sed 命令吗?它有什么作用?
【发布时间】:2009-09-22 21:44:07
【问题描述】:
sed 's/\([ab]\)\([ab]\)./\2\1x/g' file.txt

我的理解是: 在 file.txt 中,找到任何以 'a' 或 'b' 开头的字符串,然后是 'a' 或 'b',然后是任何一个字符(比如 'abc'),并将其替换为字符串第一个和第二个字符交换位置,第三个字符是 x ('bax')。命令的语法是否正确?我说的对吗?

【问题讨论】:

  • 绝对采纳 Jefromi 的建议,并在示例文件上尝试一下。

标签: shell sed


【解决方案1】:

你是对的,除了开始部分。这将尽可能多地匹配字符串中任何位置的字符,因此您最终会得到如下替换:

"123ab1" to "123bax"
"1234ab" to "1234ab"
"ab1ba2" to "baxabx"
"bbaabb" to "bbxbax"

您可能想要做的是将它锚定到带有插入字符的字符串的开头,如下所示:

s/^\([ab]\)\([ab]\)./\2\1x/g

给予:

"abc123" to "bax123"
"123abc" to "123abc"

【讨论】:

    【解决方案2】:

    是的,您是 - 请注意,末尾的“g”表示它将在每一行上进行尽可能多的替换。有什么理由你不能试试看?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-19
      • 2017-04-18
      • 2018-01-25
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多