shell笔试(面试)题 面试魔鬼

shell面试题来啦

  • 修改file.txt文件第9行的aaa为bbb
    sed '9s/666/bbb/g' h.sh
  • 查看file.txt第2行第三列的内容。
    head -2 file.txt |cut -d " " -f 3|tail -1
    sed -n "2p" file.txt |cut -d " " -f 3
    awk 'NR==2 {print $3}' file.txt
  • 输入n,求小于n的所有质数
    !/bin/bash
    I=2 #0和1不算质数,从2开始
    while [ $i -le $1 ];do
    flag=1
    for (( j=2;jj<=$i;j++ ));do #jj<=$I 原意为j<=开根号I,减少循环
    if [ $(($i%$j)) -eq 0 ];then
    flag=0
    break
    fi
    done
    if [ $flag -eq 1 ];then
    echo $i
    fi
    i=$(( i+1 ))
    done
  • 编写个shell脚本将/etc目录下大于10K的文件转移到当前目录下
    !/bin/bash
    fileinfo=($(du ../tmp/*)) #获取所有文件名及大小
    echo ${fileinfo[@]}
    basedir=($(pwd)) #当前目录
    echo $basedir
    length=${#fileinfo[@]}
    for ((i=0;i<$length;i=$(( i+2 ))))
    do
    echo ${fileinfo[$i]}
    if [ ${fileinfo[$i]} -lt 10 ];then
    mv ${fileinfo[$(( i+1 ))]} $basedir
    fi
    done
  • 给定一个文件a.txt,用输出文件第10行
    方法有很多
    grep -n "" a.txt | grep -w '10' | cut -d -f2
    head -10 a.txt|tail -1
    sed -n '10p' a.txt
    awk '{NR==10 {print $0}}' a.txt
  • 给定一个文件a.txt,用输出文件第10行的第2列
    grep -n "" a.txt | grep -w '10' | cut -d -f2|cut -d " " -f2
    head -10 a.txt|tail -1|cut -d " " -f2
    sed -n '10p' a.txt|cut -d " " -f2
    awk '{NR==10 {print $2}}' a.txt
  • 如何显示文本file.txt中第二列大于56789的行?
    awk '$1>111 {print $0}' file.txt
  • 显示file.txt的1,3,5行?
    awk 'NR1||NR3||NR==5 {print $0}' file.txt
    sed -n "1p;3p;5p" file.txt
  • **把当前目录(包含子目录)下所有后缀为“.sh”的文件后缀变更为“.txt” **
    !/bin/bash
    filename=($(find ../move/*.sh))
    echo ${#filename[@]}
    length=${#filename[@]}
    for ((i=0;i<$length;i=$(( i+1 ))));do
    mv ${filename[i]} ${filename[i]%txt}
    done
  • 打印出file.txt文件第1到第三行
    head -3 file.txt
    sed "3q" file.txt
    sed -n '1,3p' file.txt
  • 查询file.txt开头,结尾,空格
    1) 查询file里面空行的所在行号
    grep -n ^$ file
    2) 查询file以abc结尾的行
    grep abc$ file
    3) 查询file以abc开头的行
    grep ^abc file
posted @ 2020-12-04 00:29  干吧得  阅读(528)  评论(1)    收藏  举报