如何减少shell脚本的运行时间?
我已经编写了一个简单的代码,它从文本文件(具有空格分隔的列和150万行)中获取数据,并给出具有指定列的输出文件。但这段代码需要一个多小时才能执行。有人能帮我优化运行时吗如何减少shell脚本的运行时间?,shell,ubuntu,optimization,large-files,Shell,Ubuntu,Optimization,Large Files,我已经编写了一个简单的代码,它从文本文件(具有空格分隔的列和150万行)中获取数据,并给出具有指定列的输出文件。但这段代码需要一个多小时才能执行。有人能帮我优化运行时吗 a=0 cat 1c_input.txt/$1|读取p时 做 IFS=“” 我用p美元买的 做 a=`expr$a+1` 如果[$a-等式$2] 然后 回音“$i” fi 完成 a=0 完成>>。/1.c.$2.column.freq 一些示例输入行: 1 ib Jim 34 1 cr JoHn 24 1 ut MaRY 46
a=0
cat 1c_input.txt/$1|读取p时
做
IFS=“”
我用p美元买的
做
a=`expr$a+1`
如果[$a-等式$2]
然后
回音“$i”
fi
完成
a=0
完成>>。/1.c.$2.column.freq
一些示例输入行:
1 ib Jim 34
1 cr JoHn 24
1 ut MaRY 46
2 ti Jim 41
2 ye john 6
2 wf JoHn 22
3 ye jOE 42
3 hx jiM 21
如果输入的第二个参数为3,则示例输出的某些行:
Jim
JoHn
MaRY
Jim
john
JoHn
jOE
jiM
我猜你是想只打印一列,然后像这样做
#! /bin/bash
awk -v c="$2" '{print $c}' 1c_input.txt/$1 >> ./1.c.$2.column.freq
cut
的实用程序。所以
从单个空格分隔的文件bigfile中提取第三个字段
做:
while read a b c d; echo "$c"; done < bigfile
在读取b c d时;回声“$c”;完成<大文件
…如果要打印的字段是命令行参数,则
有几种shell命令方法,但它们都基于这一行
您试图通过脚本实现什么?1 ib Jim 34 1 cr JoHn 24 1 ut MaRY 46 2 ti Jim 41这是4行示例输入,在输出中我只想要名称
bash:[:1:预期的一元运算符
-它应该做什么?请澄清目标是1)优化效率低下的代码,仅使用shell命令;还是2)用其他更快的util替换所有代码。
while read a b c d; echo "$c"; done < bigfile