【linux】学习linux,必掌握的五大命令:awk、sed、grep、find、cut 及文本文件查找并替换实战操作

一、五大命令:

1. sed用法( -i参数 直接修改文档,不加仅仅为操作缓存数据)

sed 's/old/new/g' file.txt         #将old 替换为 new
sed 's/^/&id /g' file.txt          #将每一行最前面加入id
sed '/mei/a lai/' file.txt         #在文档中的mei后一行加一个lai  
                                   #a:表示在其之后 2a:表示第二行增加  i:表示在其之前
sed -n '/mei/p' file.txt           #打印mei所在的行   p:表示打印
sed -n '1,5p' file.txt             #打印第一行到第五行
sed -n '1p;$p'  file.txt           #打印第一行和最后一行
sed 's/ /\n/g' sed.txt | grep -v '^$' | sort -nr   #空格换换行后 去除空行 排序
sed -d # 删除   
sed -a # 增加

2. grep用法

grep  'mei'    #过滤出包含‘mei’的行
grep -v 'mei'  #过滤不包含‘mei’的行
grep '^a'      #匹配以‘a’开头 
grep 'a$'      #匹配以‘a’结束
grep '[0-9]'   #匹配数字0-9
grep '[a-z]'   #匹配字母a-z
grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'   #匹配ip地址
egrep  '10|mei'  #egrep为grep扩展  将匹配10和mei

3. awk用法(列操作)

cat mei.txt | awk '{print $1,$NF}'            #打印第一列和最后一列
cat /etc/passwd | awk -F : '{print $1}'       #-F用:分割后,打印第一列 筛选出用户
df -l | grep '/$' | awk '{print $5}' | sed 's/%/ /g'    #磁盘用量多少
awk '{print "echo" $NF}'                      #打印出内容前加入“echo”

4. find用法

find / -maxdepth 1 -size +20M -type f -name '*.txt' -mtime +30 -exec rm -rf {} \;
#-maxdepth 1 :一级目录下
#-size +20M  :大于20M的文件 
#-type f :类型文件(f:文件  d:目录) 
#-name '*.txt':   后缀.txt的 
#-mtime +30 :30天以前的(-mtime -1:表示1天内修改的)
#-exec  :承接的意思
#rm -rf :执行递归删除命令
#{} :代表-exec以前输出命令作为变量
#\  : 命令结尾符

5.cut用法

cut -d ":" -f 2 mei.txt  #-d:表示分隔符  -f:提取第几列 

二、实战操作:

1、关键词替换
sed -i "s/原来的词/新词/g" `find 查找的目录 -type f -name "*.htm*" | xargs grep '原来的词' -rl`

注意事项:
1、必须先替换长字符的词 再替换段字符词
如:最好的医院 替换 优秀品牌(先替换)
最 替换 好 (后替换)
2、遇到特殊字符(/ 和 “)和原来命令语句代码 字符一样时候,要用”"来进行转义字符

示例:

sed -i "s//