希望有人可以帮助我使用sed / awk管道,我可以在bash中使用这样的输入列表
Battleztar Bazinga
com.plumanalytics
ECCP/1.0
Go!Zilla
GT::WWW
MegaIndex.ru
MS Web Services Client
POE-Component-Client-HTTP
并提供像这样的输出列表
Battleztar\ Bazinga
com\.plumanalytics
ECCP\/1\.0
Go\!Zilla
GT\:\:WWW
MegaIndex\.ru
MS\ Web\ Services\ Client
POE\-Component\-Client\-HTTP
基本上使用反斜杠\
答案 0 :(得分:4)
您可以使用此sed
:
sed 's/[^[:alnum:]_]/\\&/g' file
Battleztar\ Bazinga
com\.plumanalytics
ECCP\/1\.0
Go\!Zilla
GT\:\:WWW
MegaIndex\.ru
MS\ Web\ Services\ Client
POE\-Component\-Client\-HTTP
[^[:alnum:]_]
将匹配任何非字母数字和下划线的字符。\\&
会在匹配的文字前放置\
。答案 1 :(得分:2)
使用awk
awk 'gsub(/[^[:alnum:]]/,"\\\\&")+1' infile
如果您有gawk
,则可以使用
gawk -i inplace 'gsub(/[^[:alnum:]]/,"\\\\&")+1' infile
将修改原始文件
在
之前保留备份gawk -v INPLACE_SUFFIX=.bak -i inplace 'gsub(/[^[:alnum:]]/,"\\\\&")+1' infile