linux_shell常见实例

1. shell命令关于脚本, 关于统计, 比如以下: a 1 b 2 c 3 a 2 b 4 用shell分别统计
cat a.txt | awk '{a[$1]=(a[$1]" "$2)}END{for (i in a)print i,a[i];}'

读取文件后缀名:echo ${$file##*.}


查找当前目录中所有大于500M的文件,把这些文件名下到一个文本文件中,并统计其个数。
find ./ -size +500M -type f | tee file_list |wc -l


查找文件夹下所有.c文件拷贝到另一文件夹下
find ./ -name *.c |xargs -i cp {} test


在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中
for filename in `find /tmp -type f -name "abc*"|head -n 100`
do 
sed -n '1p' $filename>>new
done


把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数
grep -xvf a b | tee c | wc -l


从a.log文件中提取包含“WARNING”或者“FATAL”,同时不包含“IGNORE”的行,然后提取以“:”分隔符的第五个字段
grep -E 'WARNING|FATAL' a.log | grep -v 'IGNORE' | awk -F ":" '{print $5}'


从网上下载一个文件,保存到指定目录
#!/bin/bash
url=http://rs1.bn.163.com/ent/2009/05/20_canquedege.wma
dir=~/下载
wget -P $dir $url




以行为单位,求文件A和文件B交集并集差集
并:sort -m <(sort A | uniq) <(sort B | uniq) |uniq
交:sort -m <(sort A | uniq) <(sort B | uniq) |uniq -d
差: sort -m <(sort A | uniq) <(sort B | uniq)<(sort B | uniq) | uniq -u


在下午4:50删除/abc目录下的全部子目录和全部文件;
vi /etc/crontab
50 16 * * * root rm -rf /abc/* 2>&1 &




设计一个程序,在/userdata目录下建立50个目录,并设置每个目录的权限,其中其他用户的权限为读,文件所有者的权限为读写执行,文件所有者所在组的权限为读执行
#!/bin/bash
for((i=1;i<50;i++))
do
mkdir -p/usrdata/user$i
cd /userdata
chmod 754 user$i
done


一个文件shit.txt文件内容全部是类似于【202.205.151.21】--【23:59:22】-"HTTP GET"-"Mozila"
写一个shell命令找出最多的10个IP
awk -F "--" '{print $1}' shit.txt |sort |uniq -c|sort -r| sed -n '1,10p'





























你可能感兴趣的:(Linux-shell)