0°

几道关于shell操作文件的题目

passwd.txt文件内容如下:


root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin

avahi:x:70:70:Avahi daemon:/:/sbin/nologin
hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
avahi-autoipd:x:100:104:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin

gdm:x:42:42::/var/gdm:/sbin/nologin
dsc:x:500:500:dscdsc:/home/dsc:/bin/bash
distcache:x:94:94:Distcache:/:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
postgres:x:501:501::/home/postgres:/bin/bash

1、统计文件的行数


# cat passwd.txt | wc -l	//文件行数
# more passwd.txt | wc -l	//文件行数
# grep -c "" passwd.txt		//文件行数
# grep -n "" passwd.txt		//显示行号
# cat -n passwd.txt		//显示行号

2、打印包含bash字符的行、统计包含bash行数、所在行号


# cat passwd.txt | grep "bash"				//包含bash的行
# more passwd.txt | grep "bash"				//包含bash的行
# cat passwd.txt | grep "bash" | wc -l		        //包含bash行数
# more passwd.txt | grep "bash" | wc -l			//包含bash行数
# grep "bash" passwd.txt | wc -l			//包含bash行数
# cat passwd.txt -n |awk '/bash/{print $1}'		//所在行号
# grep "bash" passwd.txt -n|awk -F: '{print $1}'	//所在行号
# cat -n passwd.txt | grep "bash"			//所在行号

3、统计空行行数、空行所在行号

# cat passwd.txt | grep '^$' | wc -l	//空行行数
# grep -n '^$' passwd.txt | wc -l	//空行行数
# cat passwd.txt | grep -n '^$'		//空行所在行号
# grep -n '^$' passwd.txt		//空行所在行号
# sed -n '/^$/=' passwd.txt		//空行所在行号

4、每一行的字段个数不同,要求结果中只取出每行的最后一个字段
aaa;bbb;ccc
a;dd;ddd;AAA
dd;BB


# awk -F';' '{print $NF}' file

5、将/usr/local/test目录下大于100K的文件移动至/tmp目录下


# find /usr/local/test -size +100K -exec mv {} /tmp \;

6、将当前目录下所有的文件内容清空


# find ./ -type f |xargs -I {} cp /dev/null {}

7、创建user1到user30的用户,并设置密码为同名用户


#!/bin/bash
for i in {1..30}
do
useradd user$i ; echo "user$i" | passwd --stdin user$i
#userdel -r user$i
done

8、将当期目录中所有大于10M的目录名写到dir.txt中


# find ./ -type d |xargs -i du -sk {}|awk '$1 > 1024 {print $2}'|awk -F'./' '{print $2}' > dir.txt

9、有2个文件A和B,将A和B重复的行去掉,并存入到C文件中
A
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
ddddddddddddd
B
aaaaaaaaaaaaa
bbbbbbbbbbbbb
eeeeeeeeeeeee
fffffffffffff


# cat A B |sort |uniq > C

10、在文件的最后增加字符串,但不是另起一行来写


# sed  -i  '$s/$/string/'  file

11、以192.168.1.2/255.255.255.0这样的格式显示出本机的IP地址


# ifconfig eth0 |grep inet | grep -v inet6 | awk '{print $2$4}' | awk -F: '{print $2$3}' | awk -FMask '{print $1"/"$2}'

12、让history命令显示时间


# echo 'HISTTIMEFORMAT="date %Y-%m-%d  %H:%M:%S "' >> /etc/profile ; source /etc/profile

13、用tcpdump命令获取到192.168.0.1端口80的数据


# tcpdump host 192.168.0.1 and port 80

14、判断当前目录大于100K的文件,如果大于100k就删除掉


# find .\-size +100k -exec rm {} \;

15、将b文件中的aaa修改成AAA


# perl -p -i -e 's/aaa/AAA/g' b

16、显示当前所在的路径


# export PS1='[`pwd`]\$'

17、统计tcp连接状态信息


# netstat -n |awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

18、在文件的某行之上添加一行
在touch的行上添加一行cp -rf $FPAT $LOADFILE’


# sed -i '/touch/a\cp -rf $FPAT $LOADFILE' /etc/rc.local
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
常用命令
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论