bash中的sed或awk用于格式化输入列表>;输出列表和转义特殊字符
希望有人能帮助我使用sed/awk管道,我可以在bash中使用它来获取这样的输入列表bash中的sed或awk用于格式化输入列表>;输出列表和转义特殊字符,bash,awk,sed,Bash,Awk,Sed,希望有人能帮助我使用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\.
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
并给出这样的输出列表
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
基本上,使用反斜杠转义所有特殊字符和空格
\
您可以使用此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
- 反括号表达式将匹配任何非字母数字和下划线的字符
- 在替换中,
将把\\&
放在匹配文本之前\
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
- 反括号表达式将匹配任何非字母数字和下划线的字符
- 在替换中,
将把\\&
放在匹配文本之前\
- 使用
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
使用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
我们的目标是添加一些自己的代码,以显示您自己为解决此问题所做的研究工作。谢谢Cyrus,我明白我应该这样做,今天我的脑袋真的一点也不舒服,病了一个星期了,所以现在真的在为最简单的事情奋斗。目标是你添加一些自己的代码,至少显示你自己为解决这个问题所做的研究工作。谢谢赛勒斯,我明白我应该这么做,今天我的头真的一点也不舒服,病了一个星期了,所以此刻我真的在为最简单的事情奋斗。这简直是神奇的,谢谢你。bash脚本中的最后一个命令行是
cat input.txt | sed's/\\\//g'| sed's/[^[:alnum:][]/\\&/g'>inputmp.txt&&mv inputmp.txt output.txt
非常感谢您的帮助。我额外使用sed管道的原因是,正在转换的输入文件中有\
,所以我首先将它们去掉。您可能可以这样做:sed's/\//g;s/[^[:alnum:][u]/\\&/g'input.txt>output.txt
非常感谢,工作非常完美。你帮了我一个大忙,我欠你一个人情。真是不可思议,谢谢你。bash脚本中的最后一个命令行是cat input.txt | sed's/\\\//g'| sed's/[^[:alnum:][]/\\&/g'>inputmp.txt&&mv inputmp.txt output.txt
非常感谢您的帮助。我额外使用sed管道的原因是,正在转换的输入文件中有\
,所以我首先将它们去掉。您可能可以这样做:sed's/\//g;s/[^[:alnum:][u]/\\&/g'input.txt>output.txt
非常感谢,工作非常完美。你帮我节省了很多时间,我欠你一个人情。非常感谢,sed对我来说很有用,但我也需要开始学习awk和gawk,所以我也会测试这些,并开始学习新东西:)那太好了,继续学习,请记下,上面一个可以省去下划线()、字符,如果你想排除,然后将其添加到括号中,当然sed
对于查找和替换之类的任务更好,并且在当前上下文中,因此提供的解决方案最适合。我尝试了您的第一个awkawk'gsub(/[^[:alnum:]/,“\\\\&”)+1'infle
但它是用空格Battleztar\\\Bazinga
来做的,其他的一切都很完美,包括带下划线的那一个,我的列表中确实有一些下划线,只是需要解决空格的\\
问题。非常感谢,sed对我很有用,但我也需要开始学习awk和gawk,所以我也将对这些进行测试,以便更好地学习新事物:)这很好,继续学习,请记下,上面一个转义下划线()、字符,如果您想排除,请将其添加到括号中,当然,sed
对于查找和替换之类的任务更好,并且在当前环境下,所以由提供的解决方案最适合。我尝试了您的第一个awkawk'gsub(/[^[:alnum:]/,“\\\\&”)+1'infle
但它是用空格Battleztar\\\Bazinga
来实现的,其他一切都很完美,包括带有下划线的空格,我的列表中确实有一些下划线,只是需要解决空格的\\
问题。