AI智能
改变未来

shell脚本学习——小工具

一、grep 行过滤工具

grep [选项] \'关键字\'  文件名grep --color=auto \'root\' passwd  过滤时关键字高亮显示或添加别名:alias grep=\'grep --color=auto\'或修改文件:/etc/bashrc     添加上面一行source /etc/bashrcgrep参数grep -n \'root\' passwd    包含root的行,打印行号grep -ni \'root\' passwd   忽略大小写匹配grep \'^root\' passwd  以root开头的行grep \'bash$\' passwd 以bash结尾的行grep -niv \'^root\' passwd   不以root开头的行,取反grep -nB 3 \'^ftp\' passwd   以ftp开头的前三行grep -nA 3 \'^ftp\' passwd   以ftp开头的后三行grep -nC 3 \'^ftp\' passwd   以ftp开头的前后三行grep -w \'hello\' passwd   以hello单词为单位精准过滤grep -o \'root\' passwd    只打印关键字

二、cut 列截取工具

cut 选项  文件名-c:      以字符为单位进行分割截取-d:      自定义分隔符,默认为制表符\\t-f:      与-d一起使用,指定截取哪个区域cut -d: -f1 passwd    截取以:分割的第一列cut -d: -f1,7 passwd   截取以:分割的第一列和第七列cut -c5-10 passwd 截取从第五个字符到第十个字符用小工具列出当前系统的运行级别:runlevel | cut -c3grep -v \'^#\' /etc/inittab | cut -d: -f2cut -d: -f2 /etc/inittab | tail -1

三、sort 排序

-u      去除重复行-n      数字排序-t       分隔符-k      第N列-r       降序排列-o      结果重定向到文件-b      忽略前导空格-R      随机排序sort -n -t: -k3 passwd  以:为分隔符按第三列数字排序sort -nr -t: -k3 passwd   降序排列sort -nr -t: -k3 passwd -o 1.txt  结果重定向到1.txt

四、uniq 去除连续重复行

-i        忽略大小写-c        统计重复行次数-d        只显示重复行uniq 1.txt    去除连续重复行

五、tee 双向覆盖重定向(屏幕输出|文本输入)

echo hello world  | tee 1.txtecho 888999 | tee -a 1.txt   双向追加重定向

六、diff 逐行比较文件不同

diff [选项] 文件1 文件2-b        不检查空格-B       不检查空白行-i         不检查大小写-w       忽略所有空格--normal      正常格式-c         上下文格式显示-u         合并格式显示diff file1 file2    file1如何改变能和file2一样diff -q dir1 dir2    比较目录里面的不同**小技巧**:以一个文件为标准去修改其他文件,修改地方很多时,可以通过打补丁完成diff -uN file1 file2 > file.patchpatch file1 file.patchdiff file1 file2

七、paste 合并文件行

-d       自定义间隔符,默认tab-s       串行处理,非并行paste file1 file2     两个文件内容以制表符隔开合并为一行paste -d: file1 file2    以:隔开paste -s file1 file2    以行为单位合并文件

八、tr 用于字符转换、替换和删除

-d      删除-s      将重复出现的字符串压缩为一个字符串a-z或[:lower:]         小写字母A-Z或[:upper:]        大写字母0-9或[:digit:]           数字[:alnum:]                所有字母和数字[:alpha:]                 所有字母tr \'a-z\' \'A-Z\' < 1.txt    小写字母替换成大写字母tr \': /\' \'#\' < 1.txt       单个匹配替换tr -d \'a-z\' < 1.txttr -d \': / 0-9,\' < 1.txt       删除文件里面匹配的字符tr -s \'a-z\' < 1.txt        将文件中重复出现的小写字母字符串压缩为一个字符串

Practice
test1: 截取ip地址

ifconfig eth0 |grep \'Bcast\' | cut -d: -f2 | tr -d \'a-zA-Z \'ifconfig eth0 |grep \'Bcast\' | cut -d: -f2 | cut -d \' \' -f1ifconfig eth0 |grep \'Bcast\' | tr -d \'a-zA-Z:\' | tr \' \' \'\\n\' | grep -v \'^$\'ifconfig eth0 | grep \'HW\' | tr -s \' \' | cut -d \' \' -f5   截取MAC地址

test2:将普通用户的用户名、密码和默认shell保存到文件中,中间用tab隔开

grep \'bash$\' passwd | grep -v \'root\' | cut -d: -f1,2,7 | tr \':\' \'\\t\' | tee abc.txt
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell脚本学习——小工具