linux系统命令

!历史命令id      执行对应的指令

!!                    执行上一次指令

正则:

grep -i "root" a.txt -c   从a.txt中统计root的字符串的次数

grep -En '\.$' luffy.txt   从a.txt中过滤以.结尾的行

cat  -En   a.txt          查看a.txt里面的内容以$结果,空行也是以$结尾 

grep -E '[^0-5]' a.txt      从a.txt中查找除0到5的内容

sed -n '2,5p' luffycity.txt         打印第2到第5行 

sed -n '2,+2p' luffycity.txt       打印第2行到后面加2行内容

sed -in   '6,$d' luffycity.txt       将文件第6行到最后一行删除

sed -e 's/I/My/g' -re 's/[0-9]+/88888888/' luffycity.txt      -e是可以连续处理,-r支持扩展正则,将I换成My,将一串数字换成88888888

sed -e 's/I/My/g' -re 's/[0-9]+/88888888/' luffycity.txt -i

sed '2a My linux is good' luffycity.txt    文件第2行后面加My linux is good

sed -i '4i My telephone is 0002315116' luffycity.txt   文件第4行前面插入My telephone is 0002315116

sed '3a I like girl\nI like pretty girl' luffycity.txt   文件第3行后加2行内容(\n为换行)

sed 'a -----------------------------' luffycity.txt    文件每一行后面加------------------------------------

ip a | sed -ne '/inet /p' | grep -Eo '[^a-z ]+' | sed '$d' | sed '1d' | sed '2d' 取ip

ifconfig eth0 | sed -ne '2p' | sed 's/^.*inet //'| sed   's/net.*$//'   取ip

ifconfig  eth0 | sed -e '2s/^.*inet //'  -e '2s/net.*$//p' -n     取ip,(2s表示第2行做替换操作)

awk   选项    '模式{动作}'    文件

awk '{print $1$2$5}' chaoge.txt             取3列

awk '{print $1,$2, $5}' chaoge.txt          取3列

awk '{print $NF}' chaoge.txt                   取最后一列

 awk 'NR==2' a.txt         打印第2行

 awk 'NR==2,NR==5' a.txt     打印第2到第5行

awk  'NR==5{print $2}'   chaoge.txt    打印第5行的第2列的内容

awk 'NR==3,NR==6{print $2,$3}' chaoge.txt    打印第3到6行的第2和第3列

awk '{print NR,$0}' chaoge.txt    显示所有内容且输出行号

awk 'NR==3,NR==5{print NR,$0}' chaoge.txt     显示3到5行且输出内容及行号

awk '{print $1,$NF,$(NF-1),$(NF-2)}' chaoge.txt     打印第一列,最后一列,倒数第二第三列

ifconfig  eth0 | awk 'NR==2{print $2}'       取ip

 awk -F ':' -v OFS='===' '{print $1,$NF}' a.txt    以===代替,表示的空格分隔符输出

FNR  处理多个文件的时候 ,单独输出每个文件的行号,如下图:

awk -v RS=' '   '{print NR,$0}'  chaoge.txt       输入读取的时候RS 将 空格作为换行

awk -v ORS='---超哥666---'  '{print NR,$0}' chaoge.txt    输出打印的时候ORS将每行末尾的换行符用---超哥666---代替

 

awk 'BEGIN{print "超哥开始用awk了"}{print $0}' chaoge.txt       BEGIN{print "超哥开始用awk了"}是模式,先做什么

结果:

awk 'BEGIN {print "超哥开始用awk了"}{print ARGV[0]$0}' chaoge.txt    数出记录的参数数组里第一个值,图示中的是参数数组里第一个值是awk

awk 'BEGIN {print "超哥开始用awk了"}{print ARGV[1]$0}' chaoge.txt      数出记录的参数数组里第一个值,图示中的是参数数组里第一个值是chaoge.txt

awk 'BEGIN{print "超哥开始用awk了"}{print ARGV[0],ARGV[1],ARGV[2]}' chaoge.txt

输出记录的参数组里面第一个,第二个参数,第三个参数,当前没有第三个参数。 

 awk 'BEGIN{print "超哥开始用awk了"}{print ARGV[0],ARGV[1],ARGV[2]}' chaoge.txt  a.txt

 awk -v myname='超哥' 'BEGIN{print "我的名字是: ",myname}'     -v可以修改内置变更也可以定义一个自定义变量,当前是自定义一个内置变更,然后在BEGIN模式中用到打印出来

下图:在动作中用到自定义内置变更myname,则每一行都有 超哥 ,

awk -F ':'  'BEGIN{printf "%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\n","用户名","密码","UID","GID","用户注释","用户家目录","解释器"}{printf "%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\n",$1,$2,$3,$4,$5,$6,$7}' a.txt 

awk 'BEGIN{print "awk执行之前打印的内容。。。"}NR==2{print $1}END{print "文本执行结束打印的内容"}' pyyu.txt

awk 'BEGIN{print "awk执行之前打印的内容。。。"}NR<2{print $1}END{print "文本执行结束打印的内容"}' pyyu.txt

awk 'BEGIN{print "awk执行之前打印的内容。。。"}NF==5{print $1}END{print "文本执行结束打印的内容"}' chaoge.txt

打印有5列的相关行的第一列的内容

 

 

 

 awk -F ':' '/^nscd/{print $1}' a.txt    从a文件找到nscd开头的行,然后打印符合条件的行的以:分割的第一列

awk '/\/sbin\/nologin/'  a.txt   从a文件找到/sbin/nologin/的行,即是不能登录的用户信息

awk '/^operator/,/^chrony/{print NR,$0}' a.txt   从a文件找到以operator到以chrony开头的行,打印行号和每行全部内容

awk '{print $1}'   access.log | sort -n | uniq -c | sort -nr | head -n 10     对access.log文件中的访问ip进行统计并排序去重,从大到小排序,统计前10

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值