ifconfig ens160 | head -n2 | tail -n1 | tr -s " "|cut -d " " -f3
ifconfig eth0 | sed -rn '2s/ +inet +([^ ]*) +netmask.*/\1/p'
ifconfig eth0 | awk 'NR==2{print $2}'
df | tail -n +2 | tr -s " "|cut -d" " -f 5|tr -d "%"|sort -nr|head -n1
df | sed -rn '/^\/dev.*/s#.* +([[:digit:]]+)%.*#\1#p'|sort -nr|head -n 1
df | awk '/^\/dev/ {print substr($5,1,length($5)-1)}' | sort -nr | head -n1
cat /etc/passwd | cut -d":" -f3,1,7|sort -t: -k2 -nr|head -n1
awk -v FS=: -v OFS=' ' '{print $1,$3,$7 }' /etc/passwd | sort -t" " -k2 -nr | head -n1
stat /tmp/ | head -n4 | tail -n1 | cut -d" " -f2 | tr -d "()"|cut -d/ -f1
stat /tmp/ | sed -rn 's/Access: +\(([0-9]+)\/.*/\1/p'
ss -nt | awk 'NR>=2{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr
egrep -o -f a.txt b.txt
cat a.txt b.txt | sort | uniq -d
egrep -c "processor" <(cat /proc/cpuinfo)
lscpu | awk '/^CPU\(s\):/{print $2}'
[root]#cat age.txt
xiaoming=20
xiaohong=18
xiaoqiang=22
cut -d= -f2 ./age.txt | paste -s -d+ | bc
cut -d"=" -f2 ./age.txt|tr '\n' + | grep -Eo ".*[0-9]"|bc
awk -F= '{print $2}' ./age.txt | paste -s -d "+" | bc
awk -F= -v ORS='+' '{print $2}' ./age.txt | egrep -o '^.*[0-9]' | bc
/var/log/message
sed -n '/^Apr 12 12/,/^Apr 19 13/p' /var/log/messages
sed -n -e '/^Apr 12 12/p' -e '/^Apr 12 13/p' /var/log/messages
sed -n '/^Apr 12 12/p;/^Apr 12 13/p' /var/log/messages
df | sed -En '/^\/dev\/.*/s/^.* +([0-9]?[0-9]?)%.*/\1/p' | sort -nr
df | sed -En 's/^\/dev\/.* +([0-9]+)%.*/\1/p' | sort -nr
1、显示/etc目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录列表
ls -d /etc/l*[0-9]*[[:lower:]]
ls -a /etc/ | egrep '^l.*[0-9]+.*[a-z]$'
2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录列表
ls -d /etc/[0-9]*[^0-9]
ls -a /etc | egrep '^[0-9].*[^0-9]$'
3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录列表
ls -d /etc/[^a-z][a-z]*
ls -a /etc/ | egrep '^[^[:alpha:]][[:alpha:]].*'
4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录列表
ls -d /etc/rc[0-6]*
ls -a /etc/ | egrep '^rc[0-6].*'
5、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录列表
ls -d /etc/[mnrp]*.conf
ls -a /etc | egrep '^[mnrp].*\.conf$'
6、只显示/root下的隐藏文件和目录列表
ls -d /root/.[^.]* /root/*/
ls -aF /root/ | egrep '^\.[^./].*$|^[^.].*/'
7、只显示/etc下的非隐藏目录列表
ls -d /etc/[^.]*/
ls -F /etc/ | egrep '^.*/'
9、显示/etc/passwd文件中不以/bin/bash结尾的行
egrep -v '^.*/bin/bash$' /etc/passwd
10、显示用户rpc默认的shell程序
sed -rn 's/^rpc.*:(.*)/\1/p' /etc/passwd
11、找出/etc/passwd中的两位或三位数
egrep -o '[0-9]{2,3}' /etc/passwd
12、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行
egrep '^ +[^ ]*' /etc/grub2.cfg
13、找出“netstat -tan”命令结果中以LISTEN后跟任意多个空白字符结尾的行
egrep '.*LISTEN *' <(netstat -tan)
14、显示CentOS7上所有UID小于1000以内的用户名和UID
awk -F: '$3<1000{print $1,$3}' /etc/passwd
15、找出/etc/passwd用户名和shell同名的行
tr ":/" " " < /etc/passwd | awk '$1==$NF{print $0}'
17 显示三个用户root、halt、shay的UID和默认shell
awk -F: '$1=="root"||$1=="halt"||$1=="shay"{print $1,$3,$NF}' /etc/passwd
18 找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
cat /etc/rc.d/init.d/functions | egrep '^[0-9a-zA-Z_]+\(\)'
19 使用egrep取出/etc/rc.d/init.d/functions中其基名
egrep -o '[a-zA-Z0-9_-]+$' <<<'/etc/rc.d/init.d/functions'
20 使用egrep取出上面路径的目录名
egrep -o '^.*/' <<<'/etc/rc.d/init.d/functions'
21 统计last命令中以root登录的每个主机IP地址登录次数
last | awk '$1=="root"{print $3}' | sort | uniq -c
22 利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255
[0-9]
[1-9][0-9]
1[0-9][0-9]
2[0-4][0-9]
25[0-5]
23 1.显示ifconfig命令结果中所有IPv4地址2.将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前面
ifconfig | egrep -o "[0-2]?[0-9]?[0-9]?\.[0-2]?[0-9]?[0-9]?\.[0-2]?[0-9]?[0-9]?\.[0-2]?[0-9]?[0-9]?"
egrep -o '[a-z]' <<< "welcome to magedu linux" | sort | uniq -c | sort -nr
24、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符
sed -ri 's/^ +([^ ]+)/\1/' /etc/grub2.cfg
25、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
sed -ri 's/^# +([^ ]+)/\1/' /etc/fstab
26、在centos6系统/root/install.log每一行行首增加#号
sed -ri 's/^/#/' /root/install.log
27、在/etc/fstab文件中不以#开头的行的行首增加#号
sed -ri 's/(^[^#].*)/#\1/' /etc/fstab
28、处理/etc/fstab路径,使用sed命令取出其目录名和基名
目录名:sed -rn 's#^(/[^ ]+) +.*#\1#p' /etc/fstab | sed -rn 's#/(([^/]+/)+)(.*)#/\1#p'
基名: sed -rn 's#^(/[^ ]+) +.*#\1#p' /etc/fstab | sed -rn 's#/(([^/]+/)+)(.*)#\3#p'
29、利用sed 取出ifconfig命令中本机的IPv4地址
ifconfig | sed -rn 's#^ +inet +([0-2]?[0-9]?[0-9]?\.[0-2]?[0-9]?[0-9]?\.[0-2]?[0-9]?[0-9]?\.[0-2]?[0-9]?[0-9]) +.*?#\1#p'
30、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
ls /mnt/Packages | awk -F. '{print $(NF-1)}' | sort | uniq -c
31、统计/etc/init.d/functions文件中每个单词的出现次数,并排序
egrep -o '[a-zA-Z0-9_]+' /etc/init.d/functions | sort | uniq -c | sort -nr
32、将文本文件的n和n+1行合并为一行,n为奇数行
awk '{if(NR % 2 != 0) {printf "%s ", $0} else {print $0}}' ./file.txt
33、文件host_list.log 如下格式,请提取”.magedu.com”前面的主机名部分并写入到回到该文件中
www.magedu.com
blog.magedu.com
study.magedu.com
linux.magedu.com
python.magedu.com
awk -F. '{print $1}' ./host_list.log >> host_list.log
34、统计/etc/fstab文件中每个文件系统类型出现的次数
awk '/^[^#]/{print $3}' /etc/fstab | sort | uniq -c
36、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字
egrep -o '[0-9]' <<<"Yd$C@M05MB%9&Bdh7dq+YVixp3vpw"
37、 文件random.txt记录共5000个随机的整数,存储的格式100,50,35,89…请取出其中最大和最小的整 数
tr ',' '\n' < random.txt | sort -nr | head -n 1
tr ',' '\n' < random.txt | sort -nr | tail -n 1
39、将以下文本文件awktest.txt中 以inode列为标记,对inode列相同的counts列进行累加,并且统计 出同一inode中,beginnumber列中的最小值和endnumber列中的最大值
inode|beginnumber|endnumber|counts|
106|3363120000|3363129999|10000|
106|3368560000|3368579999|20000|
310|3337000000|3337000100|101|
310|3342950000|3342959999|10000|
310|3362120960|3362120961|2|
311|3313460102|3313469999|9898|
311|3313470000|3313499999|30000|
311|3362120962|3362120963|2|
awk -F'|' '
NR > 1 {
inode = $1;
begin = $2;
end = $3;
count = $4;
# 累加 counts 值
counts[inode] += count;
# 更新最小 beginnumber
if (!minbegin[inode] || begin < minbegin[inode]) {
minbegin[inode] = begin;
}
# 更新最大 endnumber
if (!maxend[inode] || end > maxend[inode]) {
maxend[inode] = end;
}
}
END {
# 输出最终结果
print "inode|minbeginnumber|maxendnumber|totalcounts|";
for (i in counts) {
print i "|" minbegin[i] "|" maxend[i] "|" counts[i] "|";
}
}' awktest.txt
awk -F"|" -v OFS="|" \
'NR!=1{inode[$1]+=$4;min[$1]=min[$1]==0?$2:min[$1];min[$1]=min[$1]>$2?$2:min[$1];\
max[$1]=max[$1]==0?$3:max[$1];max[$1]=max[$1]<$3?$3:max[$1]}\
END{for(i in inode)print i,min[i],max[i],inode[i]}' test2.txt
1、查找/var目录下属主为root,且属组为mail的所有文件
find /var/ -user root -group mail
2、查找/var目录下不属于root、lp、gdm的所有文件
find /var/ -not \( -user root -o -user lp -o -user gdm \)
3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件
find /var/ -mtime -7 -not \( -user root -o -user postfix \)
4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件
find / \( -nouser -o -nogroup \) -atime -7
5、查找/etc目录下大于1M且类型为普通文件的所有文件
find /etc/ -size +1M -type f
6、查找/etc目录下所有用户都没有写权限的文件
find /etc/ -not \( -perm /222 \)
7、查找/etc目录下至少有一类用户没有执行权限的文件
find /etc/ -not -perm -111
8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件
find /etc/init.d/ -perm -113
11 每天将/etc/目录下所有文件,备份到/data独立的子目录下,并要求子目录格式为 backupYYYYmm-dd,备份过程可见
vim /etc/cron
0 0 * * * cp -av /etc /data/backup`date +\%Y\%m-\%d`
12 创建/data/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限
rm -rf /data/rootdir
cp -a /root /data/rootdir
13 为所有的f开头包含conf的文件加上.bak后缀:
find . -type f -name 'f*conf*' -exec mv {} {}.bak \;
14 去掉所有的bak后缀:
rename ".bak" "" ./
15 如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/b
mkdir -p /testdir/dir1/{x,y}/{a,b}
16 如何创建/testdir/dir2/x, /testdir/dir2/y, /testdir/dir2/x/a, /testdir/dir2/x/b
mkdir -p /testdir/dir2/{x,y}
mkdir -p /testdir/dir2/x/{a,b}
17 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7
mkdir /testdir/dir{3..5}
mkdir /testdir/dir5/dir{6,7}