Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 删除除制表符以外的ctrl字符_Linux_Bash_Sed_Awk - Fatal编程技术网

Linux 删除除制表符以外的ctrl字符

Linux 删除除制表符以外的ctrl字符,linux,bash,sed,awk,Linux,Bash,Sed,Awk,我有一个制表符分隔的文件,其中有许多垃圾cntrl字符。我想删除除tab(即^I)之外的控制字符。因此,我需要一个POSIX正则表达式,它可以识别不包括制表符的控制字符。试试看 tr -Cd '[:print:]\n\t' < file tr-Cd'[:print:][\n\t'

我有一个制表符分隔的文件,其中有许多垃圾cntrl字符。我想删除除tab(即^I)之外的控制字符。因此,我需要一个POSIX正则表达式,它可以识别不包括制表符的控制字符。

试试看

tr -Cd '[:print:]\n\t' < file
tr-Cd'[:print:][\n\t'

这将只打印可打印字符、换行符和
\t
实例。

您可以使用
tr

tr -d '\000-\010\013-\037' < inputfile
tr-d'\000-\010\013-\037'
\008
会更好,因为
\010
8不是八进制数字!010是十进制8.+1,用于显示如何使用八进制编码字符的范围。@devnull:Re
-C
-C
:我从未理解
-C
-C
之间概念上的区别-实际上,它们似乎都是这样做的。例如,GNU
tr
s命令行帮助将它们简单地列为同义词。POSIX规范()区分了字符(
-C
)和值(
-C
),但没有解释“值”是什么。你能解释一下区别吗?只是
-c
看起来更标准。在BSD上,
-C
会给出一个错误。@devnull:经过一些挖掘()我得出结论:
-C
是区域设置感知的(支持多字节字符),因此更可取<代码>-c
,相反,它是以字节为单位操作的<代码>-C
自POSIX:2001(SUSv3)以来一直是POSIX的一部分。当你说BSD时,我想你指的是类似BSD的平台;FreeBSD和OSX都支持
-C
-您知道有哪些不支持的吗?