替换!与sed导致事件未找到

时间:2013-05-07 14:39:37

标签: sed csh tcsh

我需要将!的每次出现更改为:作为组文件中的字段分隔符。

sed 's/!/:/g' filename > newfilename 

但我收到错误/: Event not found

2 个答案:

答案 0 :(得分:8)

您正在使用csh,因此正在解释!以解决此!或仅使用bash的问题:

sed 's/\!/:/g' file > outfile

使用csh !用于命令历史记录引用,它甚至可以在一对撇号'或引号"内使用,除非使用反斜杠{{}进行转义1}}。

答案 1 :(得分:1)

我会验证文件的存在和文件权限,因为sed行工作正常:

[root@hacklab5 ~]# cat /tmp/sed.org 
dewed!Ddew!de
dewwe!ds!dewe
[root@hacklab5 ~]# sed 's/!/:/g' /tmp/sed.org 
dewed:Ddew:de
dewwe:ds:dewe
[root@hacklab5 ~]# sed 's/!/:/g' /tmp/sed.org > /tmp/sed.new
[root@hacklab5 ~]# cat /tmp/sed.new 
dewed:Ddew:de
dewwe:ds:dewe