sed的使用
-
使用vim在打开的文件中替换内容
:%s/168/134/g #把文件中的所有168替换为134
-
在文件外部替换文件中的内容
sed -i 's/192.168/192.134/g' list.txt #把list.txt文件中的'192.168'替换为'192.134' #如不加-i 就是预修改 不会更改到文件
-
在每一行的最开始添加一个空格
sed -i 's/^/& /g' list.txt #'^'表示行首
-
在每行的末尾添加一个123,包括空行
sed 's/$/&123/g' list.txt #'$'表示行尾
-
在匹配串下一行添加字符
sed '/dest/a #####' list.txt #在'dest'字符的下一行添加字符'#####' 'a'表示下一行
-
在匹配串的上一行添加字符
sed '/src/i #####' list.txt #在'src'字符的上一行添加字符'#####' 'i'表示上一行
-
打印包含匹配串的行
sed -n '/dest/p' list.txt #打印匹配'dest'的行 'p'表示打印
-
打印指定行
sed -n '1p' list.txt #打印第一行 sed -n '1,2p' list.txt #打印1,2行 sed -n '1,4p' list.txt #打印1到4行
-
对一个文件中的数字进行排序
对下面这些数字进行排序,并输出最大值和最小值
3232 533 646456 656 546 543345453 66 64 23 343242 646 665 654 65 76 7676 765 44 33 23 2
cat sort.txt | sed 's/ /\n/g' | grep -v '^$' | sort -nr | sed -n '1p;$p' # '1p'表示第一个 '$p'表示最后一个 # grep -v 表示不匹配 此处的 grep -v '^$' 表示不匹配空行
输出结果
grep的使用
grep '^3' sort.txt #匹配以3开头的行
grep '3$' sort.txt #匹配以3结尾的行
grep '^5' sort.txt | grep '3$' #匹配以5开头,以3结尾的行
grep '[a-z]' list.txt #匹配包含字母a-z的行
grep匹配真实ip
匹配下列内容中的真实ip
192.168.150.
192.168.150.29
192.168
192
192.168.150.1234
使用命令
cat ip.txt | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}$'
egrep匹配多个
egrep "14|15" list.txt
#同时匹配包含 14 或 15 的行
awk的使用
-
打印某一列
cat ip.txt | awk "{print $2}" #打印第二列 以空格分隔
-
打印/etc/passed文件中的用户名
cat /etc/passwd | sed 's/:/ /g' | awk '{print $1}' #把':'号替换为空格 再打印第一列 cat /etc/passwd | awk -F: '{print $1}' # -F参数指定分割符 # print $NF 表示最后一列
-
查看根目录磁盘的使用率
df -h | grep '/$' | awk '{print $5}' | sed 's/%//g'
find的使用
#查找根目录下所有名字为list.txt的文件
find / -name list.txt
#查找当前目录下名字为list.txt的文件
find . -name list.txt
#只查找一级目录
find . -maxdepth 1 -name list.txt
#查找当前目录下类型为文件并且以.sh结尾的文件
find . -maxdepth 1 -type f -name '*.sh'
#查找今天修改过的 .sh 文件
find . -maxdepth 1 -type f -name '*.sh' -mtime -1
#查找一天前修改过的 .txt 文件
find . -maxdepth 1 -type f -name '*.txt' -mtime 1
#查找文件并拷贝到指定目录下
find . -maxdepth 1 -name '*.sh' -mtime 1 -exec cp {} /tmp/ \;
#查找指定大小的文件
find . -maxdepth 1 -type f -size 2k