Linux/Unix用字符串替换字符串中的模式并使用sed保存到新文件

iJa*_*ava 3 linux design-patterns sed

我有一个任务,要替换字符串中的特定模式.到目前为止,我尝试了类似命令, sed -e 's/text_to_find/text_to_replace/g' file 但我不知道为什么它改变了所有字符串,而不仅仅是我想改变的部分.

我想要做的是在每个包含word的字符串中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
Run Code Online (Sandbox Code Playgroud)

这是我想在新文件中看到的

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
Run Code Online (Sandbox Code Playgroud)

Ps这只是示例文件,在我使用的实际文件中,并非每行都有单词china,有100000个字符串,让我们说约500个已经china

Kal*_*dhi 8

您可以尝试此sed命令

sed 's/,\(.*china\)/,Tomas_proxy.lt\/\1/' FileName
Run Code Online (Sandbox Code Playgroud)

要么

sed 's/,\(.*china\)/,Tomas_proxy.lt\/\1/' FileName > NewFile
Run Code Online (Sandbox Code Playgroud)

要么

sed  -i.bak 's/,\(.*china\)/,Tomas_proxy.lt\/\1/' FileName 
Run Code Online (Sandbox Code Playgroud)