Linux命令
Posted 韩小北(韩凯)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令相关的知识,希望对你有一定的参考价值。
前言
在平时的自动化中经常用到一个命令,把本地写的代码上传到服务器上。
命令:scp 本地文件 work@ip:目标路径
Linux命令三剑客
awk:文本处理工具
sed:行编辑器
grep:查找
awk和sed正则匹配都是一样的用法,都是使用 “/正则匹配表达式/”
AWK
1、以冒号分割打印passwd文件中的第三列:awk -F \':\' \'{print $3}\' /etc/passwd
2、以冒号分割打印passwd文件中的第一和三列:awk -F \':\' \'{print $1,$3}\' /etc/passwd
注释:可采用printf函数格式化输出,也可用print拼接字符串输出
3、以冒号分割打印每行的列数及文件名:awk -F \':\' \'{print NR,NF,FILENAME}\' /etc/passwd
4、以冒号分割打印UID大于100的用户,UID以及行号: awk -F \':\' \'{if ($3>100) print NR,$1,$3}\' /etc/passwd
以冒号分割打印UID大于100的用户,UID以及行号:awk -F \':\' \'$3>100{print NR,$1,$3}\' /etc/passwd
5、在服务器的访问日志中找到IP:192.168.1.1的访问
6、打印以s开头的UID内容:awk -F ":" "$1 /^s/" /etc/passwd
实战
7、统计当前文件夹下文件的总大小并转换成单位兆:ls -lah |awk \'BEGIN{count=0}{count+=$5}END{print count/1024/1024"M"}\'
8、统计文件的总行数:awk \'BEGIN{count=0}{count++}END{print count}\' localhost_access_log.2019-12-03.txt
9、统计/etc/passwd中UID大于100的用户总数:awk -F \':\' \'$3>100 {print $1}\' /etc/passwd |wc -l
一、先过滤出UID大于100的用户:awk -F \':\' \'$3>100 {print $1}\'
二、统计一下总数:wc -l
10、在日志文件中统计下访问IP及出现次数:awk \'{arr[$1]++}END{for (i in arr)print i,arr[i]}\' localhost_access_log.2019-12-03.txt
sed
1、打印第10行数据:nl passwd |sed -n 10p
打印1到3行数据:nl passwd |sed -n 1,3p
2、正则匹配打印含有root的行:nl passwd | sed -n /root/p
利用正则把IP192.168网段的访问内容打印出来
3、不要打印行数
4、输出到屏幕时不打印第2行: nl passwd|sed "2d"
输入到屏幕时不打印1到15行:nl passwd|sed "1,15d"
输出到屏幕时在第2行后追加bbb:nl passwd|sed "2abbbbbbb"
在1到5行后都追加bbb: nl passwd|sed "1,5abbbbbbbbbbbbbbbb"
输出到屏幕时在第2行前插入ccc: nl passwd|sed "2icccccccc"
在1到5行前都插入ccc:nl passwd|sed "1,5icccccccc"
输出到屏幕时把第5行替换成---:nl passwd|sed "5c------"
把1到15行全部替换成---:nl passwd|sed "1,15c------"
5、sed更改文件内容的两种方式
一、重定向
在a.txt文件内容末尾追加:sed -n \'$a\\ yyyyyyyyyyyyyy\' a.txt >> a.txt
二、-i参数
在a.txt文件内容的末尾追加:sed -i \'$a\\ wwwwwwwwwwwwwwwwwwww\' a.txt
6、sed替换用法
7、删除10到20行,并把所有的冒号替换成百分号:nl passwd |sed \'{10,20d;s/:/%/g}\'
8、步长打印: nl passwd |sed -n \'{3~3p}\'
9、用户名后边加一个空格
用户名改为首位字母大写
10、将后缀为txt的文件名转换为大写字母:ls *.txt |sed \'s/[a-z_-]\\+/\\U&/\'
11、提取etc目录下passwd的用户名,UID和GID:sed \'s/ \\(^[a-z_-]\\+\\) :x: \\([0-9]\\+\\) : \\([0-9]\\+\\) :.*$ /\\1,\\2,\\3/\' passwd
12、sed -e参数可以执行多个:nl passwd |sed -e \'10,15d\' -e \'s/:/%/g\'
面试题:
重命名当前目录下所有a.txt文件名为A.txt
1、find . -name "a.txt" -exec rename a.txt A.txt {} \\;
2、find . -name "*a.txt*" |xargs rename a.txt A.txt
修改文件内容中所有wahaha为hanxiaobei
1、查找当前目录下所有文件内容中带有wahaha的文件
2、修改wahaha为hanxiaobei:sed -i \'s/wahaha/hanxiaobei/\' `grep wahaha -rl .`
提取IP地址
以上是关于Linux命令的主要内容,如果未能解决你的问题,请参考以下文章