我有一项任务,要替换字符串中的特定模式。
到目前为止,我尝试过像sed -e 's/text_to_find/text_to_replace/g' file
这样的命令
但我不知道为什么它改变了所有字符串,而不仅仅是我想要改变的部分。
我想要做的是在每个包含单词china
的字符串中添加Tomas_proxy.lt
为了说清楚,我正在寻找什么,我正在使用的文件:
987173,businesswirechina.com
988254,chinacfa.com
988808,1012china.com
989146,chinawise.ru
989561,chinaretailnews.com
989817,mobileinchina.cn
990894,cmt-china.com.cn
990965,chinajoy.net
992753,octaviachina.com
993238,chinadftzalex.com
993447,china-kena.com
这是我想在新文件中看到的
987173,Tomas_proxy.lt/businesswirechina.com
988254,Tomas_proxy.lt/chinacfa.com
988808,Tomas_proxy.lt/1012china.com
989146,Tomas_proxy.lt/chinawise.ru
989561,Tomas_proxy.lt/chinaretailnews.com
989817,Tomas_proxy.lt/mobileinchina.cn
990894,Tomas_proxy.lt/cmt-china.com.cn
990965,Tomas_proxy.lt/chinajoy.net
992753,Tomas_proxy.lt/octaviachina.com
993238,Tomas_proxy.lt/chinadftzalex.com
993447,Tomas_proxy.lt/china-kena.com
P.S。这只是示例文件,在我使用的实际文件中,并非每行都有单词china
,有100000个字符串,让我们说约有500个china
答案 0 :(得分:6)
您可以尝试此sed
命令
sed 's/,\(.*china\)/,Tomas_proxy.lt\/\1/' FileName
或
sed 's/,\(.*china\)/,Tomas_proxy.lt\/\1/' FileName > NewFile
或
sed -i.bak 's/,\(.*china\)/,Tomas_proxy.lt\/\1/' FileName
答案 1 :(得分:0)
sed '/[Cc]hina/s/,/,Tomas_proxy.lt\//' File > New_File
在与china
/ China
匹配的所有行中(如果您不想进行案例检查,请进行更改),将第一个,
替换为,Tomas_proxy.lt/
。输出重定向到New_File
。
如果您希望更改位于同一文件中,请使用-i
(inplace选项):
sed -i '/[Cc]hina/s/,/,Tomas_proxy.lt\//' File
答案 2 :(得分:0)
她是awk
版本:
awk '/china/ {sub(/,/,"&Tomas_proxy.lt/")} 1' file
987173,Tomas_proxy.lt/businesswirechina.com
988254,Tomas_proxy.lt/chinacfa.com
988808,Tomas_proxy.lt/1012china.com
989146,Tomas_proxy.lt/chinawise.ru
989561,Tomas_proxy.lt/chinaretailnews.com
989817,Tomas_proxy.lt/mobileinchina.cn
990894,Tomas_proxy.lt/cmt-china.com.cn
990965,Tomas_proxy.lt/chinajoy.net
992753,Tomas_proxy.lt/octaviachina.com
993238,Tomas_proxy.lt/chinadftzalex.com
993447,Tomas_proxy.lt/china-kena.com
搜索china
,如果找到,请将,
替换为,Tomas_proxy.lt/
,然后打印所有行。
答案 3 :(得分:0)
sed '/china/ s#,#,Tomas_proxy.lt/#' YourFile
根据您的示例并假设首先,
是在文本中插入文字的地方