Sed/regex在某些情况下在子字符串上工作,但在其他情况下不工作

Sed/regex在某些情况下在子字符串上工作,但在其他情况下不工作,regex,sed,Regex,Sed,我有两条线。短的那个 eNews: arch 2002\0 N N 449 5344 NULL 2002-03-07 21:17:55 2002-03-07 21:17:55 2002-03-07 21:17:56 2002-03-07 21:17:55 18 N sent aqabmdViRA regular 3NULL NULL NULL NULL NULL NULL NULL NULL fakeema

我有两条线。短的那个

eNews: arch 2002\0 N N
449 5344    NULL    2002-03-07 21:17:55 2002-03-07 21:17:55 2002-03-07 21:17:56 2002-03-07 21:17:55 18  N   sent    aqabmdViRA  regular 3NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL            fakeemail@fake.com  Boston Images eNews: March 2002\0   N   N   N       NULL    N   NULL    2014-04-10 20:14:04
…长的那个包含短的那个

eNews: arch 2002\0 N N
449 5344    NULL    2002-03-07 21:17:55 2002-03-07 21:17:55 2002-03-07 21:17:56 2002-03-07 21:17:55 18  N   sent    aqabmdViRA  regular 3NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL            fakeemail@fake.com  Boston Images eNews: March 2002\0   N   N   N       NULL    N   NULL    2014-04-10 20:14:04
我试图使用sed替换\0,但仅当它不是\0时(因为它可能是日期的一部分)。每一行都在它自己的文件中,我使用下面的正则表达式

cat (file) | sed 's/\([^\\]\)\\0 /\1 /g'
在第一个字符串中,我得到以下结果

eNews: arch 2002 N N
这很好。然而,当我在长正则表达式上运行相同的正则表达式时,我得到以下结果

449 5344    NULL    2002-03-07 21:17:55 2002-03-07 21:17:55 2002-03-07 21:17:56 2002-03-07 21:17:55 18  N   sent    aqabmdViRA  regular 3NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL            fakeemail@fake.com  Boston Images eNews: March 2002\0   N   N   N       NULL    N   NULL    2014-04-10 20:14:04
这仍然包含“\0”,我不知道为什么。有人有什么建议吗

编辑:当我只是将行回显到cat中时,代码就工作了,但它不能从我的csv文件中工作

tail test4.csv 
'449    5344    NULL    2002-03-07 21:17:55 2002-03-07 21:17:55 2002-03-07 21:17:56 2002-03-07 21:17:55 18  N   sent    aqabmdViRA  regular 3   NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL            fakeemail@fake.com  Boston Images eNews: March 2002\0   N   N   N       NULL    N   NULL    2014-04-10 20:14:04'
cat test4.csv |sed 's/\([^\\]\)\\0 /\1 /g'
'449    5344    NULL    2002-03-07 21:17:55 2002-03-07 21:17:55 2002-03-07 21:17:56 2002-03-07 21:17:55 18  N   sent    aqabmdViRA  regular 3   NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL            fakeemail@fake.com  Boston Images eNews: March 2002\0   N   N   N       NULL    N   NULL    2014-04-10 20:14:04'
编辑2:根据要求,键入sed和cat

type sed
sed is /bin/sed
type cat
cat is /bin/cat

cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"
为什么要用猫

sed -e 's/\([^\\]\)\\0[[:space:]]/\1/g' YourFile

直接工作(如@dg99)而不存在回声问题

您确定吗?它对我有效…我只是通过复制行来测试它,它确实有效。当我直接从文件(test3.csv和test4.csv)中对它们进行cat时,它不起作用。我不知道发生了什么事。
cat
ing从文件中删除似乎也对我有用(该死的。谢谢。我在这里不知所措。你能在你的帖子中包括
类型cat
类型sed
的结果是什么吗?还有你使用的是什么操作系统?Linux,OS X,…?谢谢。我正在使用一个脚本,并试图不做太多更改。这似乎起到了作用,尽管我仍然不知道为什么。