【问题标题】:Concat text around piped input with SED使用 SED 围绕管道输入连接文本
【发布时间】:2016-09-18 18:22:55
【问题描述】:

在输入管道上使用 SED,我如何在文本中间插入输入,将用作 linux 命令?

 echo foobar | sed 's/^/one two /'

这将输出one two foobar

如何使用 SED 重新格式化它,以便管道值介于 one foobar two 之间?

我已经尝试过连续使用两个 SED 命令,但这不起作用,并且格式被弄乱了。所以我正在寻找一种使用单个 SED 命令的方法。

【问题讨论】:

  • 使用两个sed s 一个作为开始,一个作为结束:例如echo foobar | sed 's/^/one /; s/$/ two/'

标签: linux sed


【解决方案1】:
echo foobar | sed 's/\(.*\)/one \1 two/'

输出:

一个 foobar 两个

【讨论】:

  • 或者,echo foobar | sed 's/.*/one & two/'
  • 如果将结果用作命令,如果在 Linux 上,可能对 sed e 选项感兴趣,例如在 echo foobar | sed 's/.*/one & two/e' 中(将运行 one foobar two)。
【解决方案2】:

perl

$ echo foobar | perl -lne 'print "one $_ two"'
one foobar two
  • -l 选项从输入行中删除换行符并将其再次添加到 print 语句中
  • $_ 包含输入行的默认变量

awk类似

$ echo foobar | awk '{print "one " $0 " two"}'
one foobar two
  • $0 周围的空格是可选的,用于清楚起见

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2012-03-11
    • 2022-01-20
    • 1970-01-01
    • 2018-12-13
    相关资源
    最近更新 更多