![删除文件中的某个单词](https://linux22.com/image/88919/%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%9F%90%E4%B8%AA%E5%8D%95%E8%AF%8D.png)
如何从下面的第 1 行、第2 行和第 2 行中删除abcd11.gmail.com
and ,而保留其余部分?我的文件中有数千行,如下所示:*test1:
abcd14.gmail.com
*fortest2:
abcd19.gmail.com
*asatesteg:
May 23 03:44:02 abcd11.gmail.com x.x.x.x.x: *test1: May 23 04:46:21.032: #TEST1_ENTRY:4105 THIS is a test1
May 23 03:44:02 abcd14.gmail.com x.x.x.x.x: *fortest2: May 23 04:46:21.032: #TEST2_ENTRY:4105 THIS is a test2
May 23 03:44:02 abcd19.gmail.com x.x.x.x.x: *asatesteg: May 23 04:46:21.032: #TESTEG_ENTRY:4105 THIS is a testeg
答案1
你可以尝试sed
替换
$ sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file
其中abcd[0-9]*
匹配每个abcd
后跟一个数字,与*test[0-9]*:
答案2
使用 cut 的解决方案:
cat $FILE | cut -d' ' -f4,6 --complement
答案3
如果您需要删除始终相同的句子,您可以尝试
sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file.ext
如果您想保存此输出,这将显示标准输出中的输出,只需将其添加>到指令的细部或>>将内容附加到另一个文件
sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file.ext>new_file.ext
sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file.ext>>new_file.ext
然后您可以删除旧文件并替换新文件
rm file.ext
mv new_file.ext file.ext