【发布时间】:2014-10-08 03:24:29
【问题描述】:
我有一个 bash 脚本,可以合并大量文本文件并对其进行过滤。但是,由于列表庞大,我会遇到“参数行太长”错误。
echo -e "`cat $dir/*.txt`" | sed '/^$/d' | grep -v "\-\-\-" | sed '/</d' | tr -d \' | tr -d '\\\/<>(){}!?~;.:+`*-_ͱ' | tr -s ' ' | sed 's/^[ \t]*//' | sort -us -o $output
我在这里看到了一些类似的答案,我知道我可以使用 find 和 cat the files 1st 来纠正它。但是,我想知道在不破坏代码的情况下使用 echo -e 和 cat 运行单行代码的最佳方法是什么,并避免参数行太长错误。谢谢。
【问题讨论】:
-
您使用
echo -e有什么原因吗?您真的想将文本文件中的转义序列更改为它们所代表的字符吗? -
一般来说,避免参数列表太长错误的正确方法是使用一个命令,该命令在参数不适合一个时运行多个命令。
find "$dir" -name '*.txt' -exec cat '{}' +就是一个典型的例子。 -
是的,我需要更改转义序列。 ;(