shell SED:插入一个带有特殊字符的字符串

thigvfpy  于 12个月前  发布在  Shell
关注(0)|答案(5)|浏览(176)

我想在多个文件中删除一个特殊字符串“*'**”。我想插入的所有文件都有一行,在这行之后我想执行我的插入。
例如:

上传前文件:

……
从文件:LOAD_FILE
被拒绝的数据:RESISTANCE_PATH
……

删除后文件:

……
从文件:LOAD_FILE

定义为“|'

被拒绝的数据:RESISTANCE_PATH
...
我试过写下许多SED命令,但它们都产生错误。其中之一是:
sed 'LOAD_FILE/a/ DELIMITER AS'|'/g'源>目的地

ghg1uchk

ghg1uchk1#

awk  -v line='DELIMITER AS '"'|'"'' '1; /LOAD_FILE/{print line }' input
FROM LOCAL :LOAD_FILE
DELIMITER AS '|'
REJECTED DATA :REJECT_PATH
b4lqfgs4

b4lqfgs42#

使用双引号:

sed "/FROM LOCAL :LOAD_FILE/s//&\nDELIMITER AS '|'/" file

或单引号(更安全,以避免不必要的变量扩展):

sed '/FROM LOCAL :LOAD_FILE/s//&\nDELIMITER AS '"'|'"'/' file
5kgi1eie

5kgi1eie3#

这可能对你有用(GNU sed):

sed '/LOAD_FILE/aDELIMITER AS '\'\|\' file

这将在LOAD_FILE上的匹配之后追加行DELIMITER AS \'\|\'
注意:sed命令分为两部分,/LOAD_FILE/aDELIMITER AS\'\|\'连接在一起
如果您喜欢:

sed 's/LOAD_FILE/&\nDELIMITER AS '\'\|\''/' file
laximzn5

laximzn54#

换句话说:
sed -e ':a;N;$!ba;s/LOAD_FILE\n/LOAD_FILE\nDELIMITER AS \x27|\x27\n/g'
我使用的语法:
How can I replace a newline (\n) using sed?

jv2fixgn

jv2fixgn5#

请使用下面的命令在单词中间添加字符。
sed的/^../&./'文件名
使用-i选项更新文件
例如:- sed -i的/^../&./'文件名

相关问题