sed:在结果中获得两个额外的字符

sed: Getting Two Extra Characters in the Results

如何显示 sed 结果的下两个字符(通配符然后停止结果)?

echo 'this is a test line' | sed 's/^.*te*/te../'

期待中 测试

实际结果te..行

您可以使用

sed -n 's/.*\(te..\).*//p' <<< 'this is a test line'

参见online demo。这里,

  • -n - 抑制默认行输出
  • .*\(te..\).* - 匹配任何零个或多个字符,然后捕获到第 1 组 te 和任何两个字符,然后匹配字符串的其余部分
  • </code> - 用组 1</li> 的值替换整个匹配项 <li><code>p - 只打印替换的结果。

GNU AWK解决方案

echo 'this is a test line' | awk 'BEGIN{FPAT="te.."}{print }'

输出

test

说明:通知 AWK 使用 FPAT(字段模式)检测像 te.. 这样的字段,然后只打印第一个字段。

(在 GNU Awk 5.0.1 中测试)