Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell UNIX Sed命令,将`替换为';_Shell_Unix_Sed - Fatal编程技术网

Shell UNIX Sed命令,将`替换为';

Shell UNIX Sed命令,将`替换为';,shell,unix,sed,Shell,Unix,Sed,我的文件test.csv包含记录`Ashish`。我想用单引号取代它 我试过这个命令: sed 's/`/'/g' test.csv 但它不起作用。请告知。尝试在外部使用双引号“,并避开backtic sed "s/\`/'/g" Test.in > Test.out 此外,如果要更改原始文件,必须使用-i标志 sed -i "s/\`/'/g" Test.in tr是替换字符的正确工具: echo '`' | tr \` \' sed s/\'/\`/g test.csv &

我的文件
test.csv
包含记录
`Ashish`
。我想用单引号取代它

我试过这个命令:

sed 's/`/'/g' test.csv 

但它不起作用。请告知。

尝试在外部使用双引号
,并避开backtic

sed "s/\`/'/g" Test.in > Test.out
此外,如果要更改原始文件,必须使用
-i
标志

sed -i "s/\`/'/g" Test.in 

tr是替换字符的正确工具:

echo '`' | tr \` \'
sed s/\'/\`/g test.csv > out.csv

您需要转义
'
`
字符:

echo '`' | tr \` \'
sed s/\'/\`/g test.csv > out.csv
失败的原因是无法在单引号字符串中放置单引号:

解决办法是:

  • sed's/`/'/g'
    • 将单引号字符串(
      's/`/'
      )与双引号字符串(
      )和另一个单引号字符串(
      '/g'
      )连接起来,或
  • sed's/`/'\''/g'
    • 将单引号字符串与文字单引号和另一个单引号字符串连接,或
  • 其他答案中给出的其他引用策略

您所做的不止这些-您还删除了脚本分隔符
s,否则您无法在
分隔的脚本中转义
,但通过这样做,并且不使用双引号替换,您现在也必须转义回勾。