删除引号sed

时间:2013-05-02 17:29:33

标签: linux unix sed

我有一个文件,其中有数千个记录管道,每个字段用引号括起来。我基本上需要读取该行并将删除了引号的行写入新文件。 什么是正确的sed命令才能使其正常运行?我在我的Windows机器上安装了sed,但我保留了

[输入]

"First Name"|"Last Name"|"address"|"City"|"State"|"Zip"

[输出]

First Name|Last Name|address|City|State|Zip

我单独尝试过的命令,但它们都没有工作

C:\Program Files\GnuWin32\bin>sed 's/\"//g' "C:\Users\abc\Documents\testFile.txt" > quoteOutput.txt

C:\Program Files\GnuWin32\bin>sed s/\"//g "C:\Users\abc\Documents\testFile.txt" > quoteOutput.txt"

4 个答案:

答案 0 :(得分:2)

% echo '"First Name"|"Last Name"|"address"|"City"|"State"|"Zip"' | sed -e 's/"//g'                                                                        

First Name|Last Name|address|City|State|Zip

除非是分隔符,否则无需转义"

[编辑以显示如何在Windows下运行]

echo 's/"//g' > c:\Users\abc\Documents\test.sed'
sed -f c:\Users\abc\Documents\test.sed C:\Users\abc\Documents\quoteFile.txt > "C:\Users\abc\Documents\quoteFileProcessed.txt"

答案 1 :(得分:1)

更简单的选择是使用tr(假设它已包含在您已安装的工具包中):

tr -d \" < input.txt > output.txt

答案 2 :(得分:1)

更好的想法是使用反斜杠引用sed命令列表中的双引号:

C:\tmp>cat input
"First Name"|"Last Name"|"address"|"City"|"State"|"Zip"

C:\tmp>sed "s/\"//g" input
First Name|Last Name|address|City|State|Zip

答案 3 :(得分:0)

该Windows解决方案如何?
使用转义字符帽子(^),管道和输出似乎可以再次正常运行而没有错误:

cat input | tr -d \^" > output