2016-09-29 485 views
0

我有一個文件,其中包含列值附近不需要的雙引號。我需要刪除它們。有人可以幫助我嗎?從txt文件中刪除雙引號

的數據是在下面的格式

column1 date picture value "A" "2016-06-02" "books" 932422 "B" "2016-06-03" "movies" 934735 "C" "2016-06-04" "vidoes" 936025 "D" "2016-06-05" "movies" 937620 "E" "2016-06-06" "dvd" 938972 "F" "2016-06-07" "vidoes" 940274

而且我要的數據是這樣的:

column1 date picture value A 2016-06-02 books 932422 B 2016-06-03 movies 934735 C 2016-06-04 vidoes 936025 D 2016-06-05 movies 937620 E 2016-06-06 dvd 938972 F 2016-06-07 vidoes 940274

注意,第4列屬性沒有雙引號。

有人能幫我用一行shell腳本刪除這些雙引號嗎?

+1

[擊弦與另一替換一些字符](http://stackoverflow.com/questions/2871181/bash-string-replacing-some-chars-with-another) –

+0

若干確切上重複的可能的複製Unix SE –

回答

3
tr -d '"' <infile 
column1 date  picture  value 
A 2016-06-02 books  932422 
B 2016-06-03 movies  934735 
C 2016-06-04 vidoes  936025 
D 2016-06-05 movies  937620 
E 2016-06-06 dvd  938972 
F 2016-06-07 vidoes  940274 

或者使用awk

awk -F\" '{$1=$1}1' infile 
column1 date  picture  value 
A  2016-06-02  books  932422 
B  2016-06-03  movies  934735 
C  2016-06-04  vidoes  936025 
D  2016-06-05  movies  937620 
E  2016-06-06  dvd   938972 
F  2016-06-07  vidoes  940274 

或使用sed

sed 's/"//g' infile 
column1 date  picture  value 
A 2016-06-02 books  932422 
B 2016-06-03 movies  934735 
C 2016-06-04 vidoes  936025 
D 2016-06-05 movies  937620 
E 2016-06-06 dvd  938972 
F 2016-06-07 vidoes  940274 

或使用awkgsub功能:

awk '{gsub(/"/,"")}1' infile 
column1 date  picture  value 
A 2016-06-02 books  932422 
B 2016-06-03 movies  934735 
C 2016-06-04 vidoes  936025 
D 2016-06-05 movies  937620 
E 2016-06-06 dvd  938972 
F 2016-06-07 vidoes  940274 
+0

太棒了!爲您的快速反應。我也實際上找出了使用sed的解決方案,它工作。但是,從您的最終解決差異是有幫助的 – user3624000

0

如果你可以使用SED,

$ sed 's/\"//g' file.txt > file_new.txt 
0

只需使用下面的命令,並在文件上運行它。該文件會自動修改。不需要臨時文件進行重定向。

perl -pi -e 's/\"//g' infile