1

我有一个文件,其中包含数千条记录管道,每个字段用引号括起来。我基本上需要阅读该行并将删除引号的行写入一个新文件。什么是正确的 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

4 回答 4

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"
于 2013-05-02T17:33:23.283 回答
1

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

tr -d \" < input.txt > output.txt
于 2013-05-02T18:50:48.253 回答
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
于 2013-05-02T19:47:18.970 回答
0

这个 Windows 解决方案怎么样?
使用转义字符帽(^),管道和输出似乎再次正常工作,没有错误:

cat input | tr -d \^" > output
于 2018-12-06T02:10:12.460 回答