我想替换以下文字
text := a \
b \
c
使用以下内容:
text := d \
e \
f
在bash文件中。
我尝试了不同版本的“sed'”,但没有一个版本可以使用,例如:
old_path='text := a \\\n\t\tb \\\n\t\tc'
new_path='text := d \\\n\t\te \\\n\t\tf'
sed -i -e "s%old_path%new_path%g" text.txt
答案 0 :(得分:1)
尝试简单的sed。
sed 's/a \\/d \\/;s/b \\/e \\/;s/c/f/' Input_file
说明:我只是使用s/text_which_needs_to_be_replaced/new_text
使用sed的替代选项。通过用半冒号分隔它们将确保我们可以执行多次替换。根据您的需要进行替换。如果您对此有任何疑问,请告诉我。
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed '/^text := a \\/,/^\tc$/c\test := d \\\n\te \\\n\tf' file
将'/^text := a \\/,/^\tc$/
范围内的文字更改为所需的值。
答案 2 :(得分:1)
如果您不介意使用 Perl ,请尝试:
~ ❱ perl -pe 's/ ((?=[a-z]).)/" ".chr(ord($1)+3)/eg' file
text := d \
e \
f
~ ❱
您角色的ASCII代码为:100
,101
和102
因此,如果您向3
添加a b c
,则d e f
成为DeleteBehavior.Cascade