我有一个包含此头文件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
同样重要的是,也要保留FIELD1
和FIELD2
之间的所有内容,因为那是文件的字段分隔符。
我想过要使用这个:
sed -i -r '1 s/.+(FIELD1.+) : 0x.+/\1/g' file
但是显然.+FIELD1
与PFcount_01032019.txt0000777017777601777760116201541013436157760015052 0ustar nfsnobodynfsnobody▒▒FIELD1
或PFcount_01032019.txt0000777017777601777760116201541013436157760015052 0ustar nfsnobodynfsnobodyÿþFIELD1
(无论是哪一个都是不正确的)都不匹配,所以我无法从正则表达式中提取\1
。 / p>
.
不匹配每个字符吗?为什么它与FIELD1
之前的内容不匹配?