【发布时间】:2013-04-19 05:01:39
【问题描述】:
我有一个第一列有数字的文件。
100,red
101,blue
102,black
我应该编写一个 shell 脚本,它将打印带有最大和最小数字的行。
max=0
cat file.txt|while read LINE
do
fir=`echo $LINE|awk '{print $2}'`
sec=`echo $LINE|awk '{print $3}'`
if [ $fir -gt $max ]; then
max=$fir
fi
if [ $sec -gt $max ];then
max=$sec
fi
done
grep $max file.txt
这是我迄今为止为找到最大值所做的尝试。
【问题讨论】:
-
一种非常“昂贵”的方式来解析你的行,你为什么要查看
...awk '{print $3}'...你只有 2 个元素? @sudo_O 是对的,这里最好使用 awk,但是如果您只是想学习 shell 编码,那么请将其减少到while read fir sec ; do if [ $fir .... done < file.txt。祝你好运。 -
max被设置在管道诱导的子外壳中。只需更改为while read LINE; do ...; done < file.txt。但正如其他人指出的那样,这非常昂贵。 -
你应该写一个shell脚本吗?这是作业吗?