2012-07-18 162 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