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



我想在多个文件中插入一个带有" '"的字符串作为特殊字符。我想插入的所有文件都有一个行,然后我要执行插入。

eg:

文件插入之前:
...
来自本地:load_file
拒绝数据:reculd_path
...
插入后文件:
...
来自本地:load_file
定界符为'|'
拒绝数据:reculd_path
...

我尝试写下许多sed命令,但它们正在产生错误。其中之一是:

sed'load_file/a/dimiter as ' | '/g'源>目标

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

使用周围的双引号:

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

或单个引号(避免有多余的变量扩展更安全):

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

这可能对您有用(gnu sed):

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

这将在LOAD_FILE上的比赛之后附加DELIMITER AS '|'

n.b。SED命令分为两个部分,/LOAD_FILE/aDELIMITER AS'|'

串联

如果您喜欢:

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

另一种放置它的方式:

sed -e ':a;N;$!ba;s/LOAD_FILEn/LOAD_FILEnDELIMITER AS x27|x27n/g'

关于我使用的语法:

如何使用sed?

替换新线( n)

最新更新