我有一个脚本从文件中读取行,获取每行的第一列,并附加到名为该行的文件(我正在尝试编写许多不同的文件,名为$ id.txt)。
是否可以使脚本执行比此更快的操作(在单节点计算机上)?请注意,我使用read -r
和id="$(echo $line | awk '{print $1}')"
,因为我有以制表符分隔的字段,并且在某些字段中存在某些字符,例如反斜杠,我希望保留这些字符。
while read -r line
do
id="$(echo $line | awk '{print $1}')"
echo "$line" >> $id.txt
done < $1
我输入的一些特征:
$id.txt
文件不是那么大,通常平均几百行,最多几千行abc ... abc ... def ... def ... def ... def ... ghi ... ghi ...
答案 0 :(得分:6)
工作太多了。
awk '{ print >> $1".txt" }' "$1"
答案 1 :(得分:1)
我猜你的缓慢来自于为每一行做$(echo $line | awk '{print $1}'
,这意味着操作系统需要完成为每一行创建两个新进程的工作,而{{1}成为一名翻译。您应该使用诸如awk(单独)或Perl之类的内容将其压缩为一个脚本。