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