【问题标题】:Make oneliner of sed-command制作 sed-command 的 oneliner
【发布时间】:2016-05-18 23:09:23
【问题描述】:

经过一天的大量尝试,我无法使以下命令在 1 行上运行:

sed '/'"$var1"'/ {n;n;a '\'"$var2"\'' \\ 
}' tempproject.cfg

当我像上面那样运行它时,它匹配 $var1 并用 $var2 替换它之后的第 3 行。

sed 命令应该做什么的示例:

  var1=c
  var2=hello
a                                                              a
b                                                              b         
c                                                              c
d      =>     sed '/'"$var1"'/ {n;n;a '\'"$var2"\'' \\  =>     d
e              }' tempproject.cfg                              e
f                                                              'hello' \
g                                                              g
h                                                              h

当我将命令放在 1 行时,我收到以下错误:

sed: -e expression #1, char 0: unmatched `{'

提前致谢!

【问题讨论】:

  • 首先 $var1=c => var1=c 然后 $var2=hello var2=hello
  • 已修复。有什么线索可以解决这个问题吗?

标签: bash shell unix sed


【解决方案1】:
$var1=c
$var2=hello
$sed "/$var1/{n;n;n;s/.*/'$var2' \\\  /}" tempproject.cfg

应该给你

a
b
c
d
e
'hello' \  
g
h
i

为什么使用three backslash

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多