使用sed时如何逃避双引号?

时间:2011-09-15 01:39:23

标签: file bash unix sed sh

我正在尝试删除包含双引号的所有文本行,我试过这个:
sed -ne '/\"/!p' theinput > theproduct
它没有触及线条。我该怎么办?这是我的脚本: `touch tmp.txt 打开tmp.txt read -sn 1 -p“粘贴数据并按任意键转换” 回声

touch tmp.txt
open tmp.txt
read -sn 1 -p "Paste in data and press any key to convert"
echo
sed -e 's/-/                             /g' tmp.txt > tmp2.txt
grep -v '"' tmp2.txt > final.txt
open final.txt
echo Study Conversion Successful

第一个sed命令有效。它用一堆空格替换连字符(不要问为什么我需要它)。我从响应中添加的grep命令不起作用。它使引号中的行保持不变。

2 个答案:

答案 0 :(得分:3)

没有必要逃避双引号:

sed -ne '/"/!p' theinput > theproduct

答案 1 :(得分:1)

很奇怪。它“对我有用”

$ cat data.txt
dsklfljs
sdjflk"Sdgsd"
sdfj sldkfj "Sdfsd"
sdfj 
sdf
sdjflks
$ sed -ne '/\"/!p' data.txt
dsklfljs
sdfj 
sdf
sdjflks

也许这是sed的版本问题?

但是,您也可以考虑使用grep -v

$ grep -v '"' data.txt
dsklfljs
sdfj 
sdf
sdjflks