从txt文件中删除双引号

时间:2016-09-29 09:16:20

标签: shell

我有一个文件,其中包含列值周围不需要的双引号。我需要删除它们。有人可以帮我吗?

数据格式如下

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脚本来帮助我删除这些双引号吗?

3 个答案:

答案 0 :(得分: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

或使用awk&#39; gsub功能:

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

答案 1 :(得分:0)

如果你可以使用sed,

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

答案 2 :(得分:0)

只需使用以下命令并在文件上运行即可。文件会自动修改。不需要临时文件进行重定向。

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