您的位置:首页 > 运维架构 > Shell

shell练习题,shell基础学习

2017-09-12 14:15 435 查看
1、找出当前目录下的大于10k的文件,并把它移动到./tmp文件下面
for file in `ls -ltr | awk '$5 > 10240 {print $9}'` 
do
mv $file ./tmp
done

2、修改out文件第3行的文件中tset为test (-i可修改源文件)
cat out  | sed  '3s/tset/test/g'
 sed -i  '3s/tset/test/g'  out

3、打印第3行第二列
cat out | head -n3 | tail -n1 | awk '{print $2}'
cat out | sed -n '3p' | awk '{print $2}'

cat
out | sed -n '3p' | cut  -d  " " -f2

4、sed、awk、grep支持正则表达式
sed、grep支持一般正则,awk和egrep支持拓展正则。
但是其实sed和grep也是变相支持拓展正则的,只不过需要转义而已。
eg:
查找八位日期的文件夹 
ls | egrep  '^[0-9]{8}$' 
ls | grep '^[0-9]\{8\}$'
ls | sed '/^[0-9]/{8/}$/' 

5、删除除了最新的8位目录其他的目录
ls
| sed '/^[0-9]/{8/}$/' | sed '$d' | xargs rm -rf 

6、打印出第三列大于1的用户

cat /etc/passwd  | awk -F ':' '$3>1 {print $3 "\t" $1}'

7、将:替换成|
sed  -i   "s/:/\|/g"  wh.txt
cat
wh.txt  | sed    "s/\|/:/g"

8、打印查询空行的行号
grep -n ^$  log

9、查询abc结尾的行
grep -n abc$ log

10、1j加到10的结果
for((i=1;i<=10;i++))
do
j=`expr $j + $i`
done
echo $j

11、找出当前目录文件大于50k,小于100k的文件

find . -size +5 -size -1099
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: