请输出in.txt文件中的2 4 6 8 9 10 12行

in.txt文件:
学号  姓名    性别     年龄
1001  张三    男       18
1002  赵四    男       19
1003  李丽    女       18
1004  刘芳    女       32
1005  王五    男       54
1006  小明    男       32
1007  麻子    男       12
1008  叮当    女       19
1009  哑巴    男       23
10010 王伟    男       54
10012 罗锅    女       22
10013 小红    女       25

方法1:
#!/bin/sh
set +x
for i in 2 4 6 8 9 10 12;
          do
                file=in.txt
                line=`head -$i $file|tail -1`
            exec 4>out.txt
                echo "$line"
                echo "$line" >&4
          done

方法2:
#!/bin/sh
for i in 2 4 6 8 9 10 12;
do
        file=in.txt
        line=`head -$i $file|tail -1`
        echo "$line"
done

方法3:
#!/bin/sh
 a=`sed -n '2p' in.txt`
 b=`sed -n '4p' in.txt`
 c=`sed -n '6p' in.txt`
 d=`sed -n '8p' in.txt`
 e=`sed -n '9p' in.txt`
 f=`sed -n '10p' in.txt`
 g=`sed -n '12p' in.txt`
 #echo $a $b
 echo $a"\n" $b"\n" $c"\n" $d"\n" $e"\n" $f"\n" $g"\n">cc.txt
 #awk 'BEGIN{print split($a#$b#$c#$d#$e#$f#$g,myarry,"#")}END{for(i in myarry){print myarry[i]}}'

 #while read line;
 #do
        #echo $line
 #done<cc.txt
 file=cc.txt
 cat $file|while read line;
 do
        echo $line
 done

经典方法4:
#!/bin/sh
 file=in.txt
 i=1
while [ $i -lt 15 ]
do
        j=2
        #echo "i=$i j=$j"
        c=`expr $i % $j`
        if [ $c -eq 0 -o $i -eq 9 ] 
        then
                #echo "$i"
                #sed -n "'-$i'"p $file
                echo "awk 'NR==$i{print \$0}' $file"
                else
                i=`expr $i + 1 `
                continue
        fi
        i=`expr $i + 1 `
done|sh

  

posted @ 2016-12-01 16:02  feng_kui  阅读(372)  评论(0编辑  收藏  举报