2016-09-29 259 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