2012-07-18 110 views
1

我有一个文件格式:删除单词用的sed

字1“字2” WORD3

我想删除“字2”

然后文件必须是这样的:

Word1:Word3

我该怎么做sed?

注:字2多变

回答

0

如果file.txt的是你的文件,你可以在命令行试试这个:根据给定的输入

sed -e "s_: \"[a-zA-Z0-9]*\" _: _g" -i file.txt 
+0

? :) like“Версия” – umuthan 2012-07-18 09:03:53

+0

尝试使用:'sed -e“s_:\”[^ \“] * \”_:_g“-i file.txt';) – Amatas 2012-07-18 10:07:42

1

如果在INPUT_FILE没有多余的东西,刚刚替补每一个引用语与空字符串:

sed 's/"[^"]*"//' input_file 
+1

+1,但:严格意义上讲,战略经济对话应该使用基本正则表达式,所以\ +不应该是有效的(但许多SED实现接受) 。不过,我认为在这里使用'*'可能更好,因为引用的字符串可能是空的。 – 2012-07-18 14:27:18

0

在命令行中尝试

$ sed -i 's/\"Word2\"//g' /path/to/file.txt 
+0

如果我有非拉丁字符,Word2是可更改的 – umuthan 2012-07-18 08:44:41

0

如果测试是您的文件,请尝试:

# cat test | sed -r 's/\".+\"\ //' 
0

。说,Word2可能是任何东西,但Word1和Word3是固定的。 SED/AWK oneliner可以做的工作4 U:

kent$ echo 'Word1 : "Word2" Word3'|sed -r 's/(Word1 :) "[^"]*"(Word3)/\1\2/g' 
Word1 : Word3 


kent$ echo 'Word1 : "Word2" Word3'|awk -F"\"" '{print $1,$3}' 
Word1 : Word3