扩展正则表达式“。”似乎不符合所有条件

时间:2019-07-30 14:14:10

标签: regex linux bash posix-ere

我有一个包含此头文件FIELD1 FIELD2 : 0x30070040和很多垃圾字符(文件大小的一半)的文件。为了摆脱它们,我执行以下命令:

dos2unix -q -n file
sed -i $'s/[^[:print:]\t]//g' file #Removing every non-printable character (yes, dos2unix was not enough)

但是我最终得到了一个包含此奇数标头的文件。 如果我从外壳复制并粘贴它,它看起来像这样:

PFcount_01032019.txt0000777017777601777760116201541013436157760015052 0ustar  nfsnobodynfsnobody▒▒FIELD1   FIELD2 : 0x30070040

如果我从像VIM这样的文本编辑器中复制和粘贴,则它看起来像这样:

PFcount_01032019.txt0000777017777601777760116201541013436157760015052 0ustar  nfsnobodynfsnobodyÿþFIELD1   FIELD2 : 0x30070040

请注意在FIELD1之前的两个特殊字符

现在我想以这样的标题结尾:

FIELD1   FIELD2

同样重要的是,也要保留FIELD1FIELD2之间的所有内容,因为那是文件的字段分隔符。 我想过要使用这个:

sed -i -r '1 s/.+(FIELD1.+) : 0x.+/\1/g' file

但是显然.+FIELD1PFcount_01032019.txt0000777017777601777760116201541013436157760015052 0ustar nfsnobodynfsnobody▒▒FIELD1PFcount_01032019.txt0000777017777601777760116201541013436157760015052 0ustar nfsnobodynfsnobodyÿþFIELD1(无论是哪一个都是不正确的)都不匹配,所以我无法从正则表达式中提取\1。 / p>

.不匹配每个字符吗?为什么它与FIELD1之前的内容不匹配?

0 个答案:

没有答案