与sed命令有关

时间:2017-11-30 11:07:34

标签: unix sed

这是什么意思?  我没有评价这个

sed -n "s/,*Receivsed,\([0-9]\+\), *Sent,\([0-9]\+\),*/\1\2/p"

1 个答案:

答案 0 :(得分:1)

它将Receivsed(sic!)后的数字捕获到\1和发送到\2后的数字,然后用这两个数字替换整个子字符串,然后打印该行。

您可以尝试

echo ',Receivsed,123,Sent,456' |
sed -n "s/,*Receivsed,\([0-9]\+\), *Sent,\([0-9]\+\),*/\1\2/p"

详细说明:

  • -n逐行读取输入,但如果没有告诉
  • 则不打印任何内容
  • ,*匹配零个或多个逗号
  • \(...\)创建一个捕获组,组从\1
  • 开始编号
  • [0-9]\+匹配一个或多个数字
  • , *匹配逗号后跟零个或多个空格
  • s/PATTERN/REPLACEMENT/替换PATTERN by REPLACEMENT
  • 最终/p表示如果匹配成功,则会打印替换结果