我有两个字符串。短暂的...
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"
答案 0 :(得分:0)
为什么要使用猫?
sed -e 's/\([^\\]\)\\0[[:space:]]/\1/g' YourFile
直接工作(比如@ dg99)没有echo
的问题