Viv*_*Viv 1 grep sed shell-script
该命令sed $'s/[^[:print:]\t]//g'按原样打印我的 .txt 的每一行。
它是干什么用的?我在谷歌上找不到它。
例如:
sed $'s/[^[:print:]\t]//g' *.txt | wc -l
15909
cat *.txt | wc -l
15909
Run Code Online (Sandbox Code Playgroud)
没有对文件进行任何编辑。这个命令有什么作用
该sed命令从每行输入的内容中删除任何不可打印的字符,而不是制表符。行数不会改变(换行符不会被删除,因为它们不是行内容的一部分),但字符或字节数可能会改变。再次测试wc -c字节wc -m数和字符数。
正则表达式[^...]匹配任何单个字符(实际上排序元素)不中的[...]。在这种情况下,它是字符类[:print:]和制表符。将$在字符串品牌开始bash取代\t之前调用与文字制表符sed。
字符类[:print:]匹配可在当前语言环境中打印的字符,即字母数字字符、标点字符和空格(但不是制表符,它是控制字符)。
换句话说,它会删除不是字母数字字符、标点字符、空格或制表符的所有内容。
要将结果写回文件(“就地编辑”),一些sed实现有一个-i选项;使用sed -i或sed -i ''取决于实现。但是请确保首先生成正确的输出,否则您可能会破坏您的数据。