【发布时间】:2015-07-07 13:01:46
【问题描述】:
我将一个 csv 文件加载到一个变量中,然后我试图删除一些导致此错误 /usr/bin/cut: Argument list too long 的列。这是我所做的:
if [ $# -ne 1 ]; then
echo "you need to add the file name as argument"
fi
echo "input file name $1"
input_file=$(<$1)
#cut the required columns.
cut_input_file=$(cut -f 1,2,3,5,8,9,10 -d \| $input_file)
echo $(head $cut_input_file)
我错过了什么?
【问题讨论】:
-
阅读xargs。你不应该反斜杠
|管道 -
@BasileStarynkevitch 他们在哪里使用过
xargs? -
xargs通常是参数列表太长的解决方案 -
@BasileStarynkevitch 啊好吧 :)
-
只是要清楚所有这些
xargscmets:您的 sn-p 问题在下面的答案中进行了描述,xargs不是解决它的正确方法。您的输入文件包含太多单词,并且将它们全部用作cut的参数会达到控制台的限制。xargs通常用于绕过此限制,它从标准输入(不受限制)获取列表,并执行命令多次避免达到参数限制(数量,顺序等可以控制),但在您的情况下,您应该通过标准输入而不是通过参数提供数据