我有一个文件,我需要从中提取所有控制字符,但我无法理解发生了什么。
$ cat -v -e -t values.xml | head -n 10
<?xml version="1.0" encoding="UTF-8"?>^M$
^I^I^I<HHDGSID>1</HHDGSID>^M$
^I^I^I<SEHJJE>1</SEHJJE>^M$
^I^I^I<ADRTYPE>0</ADRTYPE>^M$
^I^I^I<TESTJGHJTE>30/10/2000</TESTJGHJTE>^M$
当我搜索[:cntrl:]
个字符时,我会收到类似l
的字母
在下面一行:
<?xml version="1.0" encoding="UTF-8"?>^M$
我该如何处理?
以下是my file的示例:
<?xml version="1.0" encoding="UTF-8"?>
<SOME>1</SOME>
<SOMEEXTRA>1</SOMEEXTRA>
<ADRTYPE>0</ADRTYPE>
<SOMEEXTRADATE>30/10/2000</SOMEEXTRADATE>
<SOMEEXTRACDATE>30/10/2000</SOMEEXTRACDATE>
<CODE>0</CODE>
<CEBY>1</CEBY>
</ORD>
答案 0 :(得分:0)
你可以试试这个:
while (<>) {
s/\cX//g; # removes ^X's
s/\cI//g; # removes ^I's
...
}
答案 1 :(得分:0)
当我搜索
[:cntrl:]
个字符时,会收到类似 l 的字母 在下面的行中:<?xml version="1.0" encoding="UTF-8"?>^M$
man 7 regex
说:
在方括号表达式中,包含在其中的字符类的名称 “ [:”和“:]”代表属于该字符的所有字符的列表 课。
因此,由于[:cntrl:]
必须在括号表达式内 ,因此您必须搜索[[:cntrl:]]
。
仅[:cntrl:]
就是一个括号表达式,它与列表中的任何单个字符匹配 :
,c
,n
,{{ 1}},t
,r
,因此与l
中的l
相匹配。