如果匹配,则修改行的开头和结尾

时间:2019-11-19 10:58:38

标签: bash sed

有没有一种方法可以替换文件中的所有行,

title={WHATEVER_IS_INSIDE}

title={{WHATEVER_IS_INSIDE}}

并保留未修改的内容。注意:WHATEVER_IS_INSIDE始终是不同的strig,所以我需要*左右...

3 个答案:

答案 0 :(得分:1)

输入input.txt

title={WHATEVER_IS_INSIDE}
hello
title={IS_INSIDE_WHATEVER}
world

命令:

sed '/title={.*}/s,{,{{,g;/title={.*}/s,},}},' input.txt

为您提供stdout:

title={{WHATEVER_IS_INSIDE}}
hello
title={{IS_INSIDE_WHATEVER}}
world

答案 1 :(得分:0)

您可以这样做:

echo "title={WHATEVER_IS_INSIDE}" | sed -E "s/({)([a-zA-Z0-9_]+)(})/\1\1\2\3\3/g"

输出

title={{WHATEVER_IS_INSIDE}}

答案 2 :(得分:0)

您可以这样做:

sed -e '/^title={[^}]*}$/s/{\(.*\)}/{{\1}}/'

或:

sed -E -e '/^title={[^}]*}$/s/{(.*)}/{{\1}}/'

您可能会比较简单:

sed -E -e '/title=/s/{(.*)}/{{\1}}/'

或:

awk '/^title=/{$2=sprintf("{%s}",$2)}1' FS== OFS==
相关问题