我想从文件中删除单引号和双引号。我可以在单个sed命令中执行吗?sed同时删除单引号和双引号
我想:
sed 's/\"//g;s/\'//g' txt file
,但得到这个错误
'”'是无与伦比的。
请大家帮忙。
我想从文件中删除单引号和双引号。我可以在单个sed命令中执行吗?sed同时删除单引号和双引号
我想:
sed 's/\"//g;s/\'//g' txt file
,但得到这个错误
'”'是无与伦比的。
请大家帮忙。
试试这个来代替:
sed -e 's|["'\'']||g' txt
嗯,这里就是我来。首先,我用ord()发现了单引号和双引号字符的代码,然后使用$(..)语法将它传递给未引用的sed表达式。我用XX和YY代替空字符串。显然,它从最佳状态开始是一种常态,也就是说,它们也许应该合并成一种表达方式,我鼓励你对它进行试验。 有几种技术可以避免引用问题,您还可以将sed表达式放入单独的文件中,以避免它被shell解释。当试图处理输出中的单个不可读字符时,ord()/ chr()技巧也很有用,例如非UTF控制台上的UTF字符串。
dtpwmbp:~ pwadas$ echo '"' | perl -pe 'print ord($_) . "\n";'
34
"
dtpwmbp:~ pwadas$ echo "'" | perl -pe 'print ord($_) . "\n";'
39
'
dtpwmbp:~ pwadas$ echo \'\"
'"
dtpwmbp:~ pwadas$ echo \'\" | sed -e s/$(perl -e 'print chr(34) . "\n"')/XX/g | sed -e s/$(perl -e 'print chr(39) . "\n"')/yy/g
yyXX
dtpwmbp:~ pwadas$
EDIT(注意,这时候,两个角色都具有相同字符串“YY”代替)。可能有一些shell实用程序的“翻译”字符的字符代码,方向相反,即它应该是可能的不使用Perl或其他语言解释器就可以做到这一点。
dtpwmbp:~ pwadas$ echo \'\" | sed -e s/[`perl -e 'print chr(34) . chr(39)'`]/yy/g
yyyy
dtpwmbp:~ pwadas$
和这里的但在外壳的另一种方式,也许更简单
dtpwmbp:~ pwadas$ X="'"; Y='"' ; echo $X$Y; echo $X$Y | sed -e "s/$X/aa/g;s/$Y/bb/g"
'"
aabb
dtpwmbp:~ pwadas$
你无法逃避的壳一对烧毛引号内一个单引号。转义双引号是允许的。下面的sed命令应该工作:
sed "s/['\"]//g" file
这是正确的答案,有时候你必须有单引号的文本,那么单引号的方式就是“'''''。 “'它'好极了!'”。 – jthill
另一种可能性是使用tr
:
tr -d \'\" file
您可以使用下面
sed "s/'/ /g" file.txt > newfile.txt
sed 's/\"//g' newfile.txt > Required_file.txt
Required_file.txt
命令是最终输出。
@ user2689092注意Imane的解决方案使用一种技术,用仲裁字符替换sed表达式封装。假设原始输入中没有“%”,您可以使用sed -e的%aaa%bbb%g'来替换bbb中的aaa。 –