使用 sed 了解运算符

使用 sed 了解运算符

尝试理解并分解这个命令。

echo -e '1234\n4567' | sed 's/^\(..\)\(..\)$/\1:\2/'

答案1

echo -e '1234\n4567'
  • echo
    将参数写入标准输出。
  • -e
    启用解释反斜杠转义。
  • '1234\n4567'
    要写入的序列。这里用单引号引用。这\n是一个反斜杠转义产生一个新行。如果没有这个-e选项echo,就会产生一个字面量\n.看man echo

|
  • |
    管道标准输出从左, echo, 到标准输入对于右侧的命令,sed.

sed 's/^\(..\)\(..\)$/\1:\2/'
  • sed
    s(流) ed(itor)

  • 's/^\(..\)\(..\)$/\1:\2/'s/ A / B /
    s用 B 代替 A

  • A:^\(..\)\(..\)$

    • ^行首
      • \(开始捕获组 1.(将是一个字面量(
        • .匹配任何字符并将其添加到捕获组 1。
        • .匹配任何字符并将其添加到捕获组 1。
      • \)结束捕获组 1。
      • \(启动捕获组 2。
        • .匹配任何字符并将其添加到捕获组 2。
        • .匹配任何字符并将其添加到捕获组 2。
      • \)结束捕获组 2。
    • $匹配行尾。
  • 乙:\1:\2
    • \1打印捕获组 1。
    • :打印文字:
    • \2打印捕获组 2。

换句话说:

写:

1234
4567

标准输出并将其通过管道传输到sed.

sed;从标准输入读取并匹配四个字符的行。用冒号分隔前两个和后两个并打印结果:

12:34
45:67

相关内容