Linux命令相关

本文介绍了Linux命令的强大功能,包括按频率统计文件中单词、找出文本特定行、筛选电话号码、过滤log文件、监控端口和查看进程等实用技巧。通过实例演示,展示了awk、grep、sort、uniq等工具在实际操作中的应用。
摘要由CSDN通过智能技术生成

       
 1、用Linux命令写出一个文件中出现频率最高的前十行数据
cat words.txt|sort|uniq -c|sort -k1,1nr|head -10
(1)sort:对words文件进行排序
(2)uniq -c:显示唯一的行,并在每行行首加上本行在words文件中出现的次数
(3)sort -k1,1nr:按照第一个字段,数值排序,且为逆序
(4)head -10:取前10行数据

2、用Linux命令写出一个文件中单词的统计个数,倒序排列
cat words.txt |tr -s '  ' '\n'|sort|uniq -c|sort -r|awk '{print $2,$1}'

1、首先cat命令查看words.txt
2、tr -s '  ' '\n'将空格都替换为换行 实现分词
3、sort排序 将分好的词按照顺序排序
4、uniq -c 统计重复次数(此步骤与上一步息息相关,-c原理是字符串相同则加一,如果不进行先排序的话将无法统计数目)
5、sort -r 将数目倒序排列
6、awk '{print $2,$1}' 将词频和词语调换位置打印出来

3、假设 file.txt 有如下内容:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

你的脚本应当显示第十行:

Line 10

给定一个文本文件 file.txt,请只打印这个文件中的第十行。
awk 'NR==10' file.txt

 4、有效电话号码
假设 file.txt 内容如下:

987-123-4567
123 456 7890
(123) 456-7890

你的脚本应当输出下列有效的电话号码:

987-123-4567
(123) 456-7890
 
grep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt
sed -n -r '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/p' file.txt
awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-([0-9]{4})$/' file.txt


5.查找一个log文件,其中包含字符A且不包含字符B的行
cat *.log|grep 'A'|grep -v 'B'


6.使用awk命令获取文本中的某一行、某一列
(1)打印文件的第一列:
   awk '{print $1}' filename
(2)打印文件的前两列:
   awk '{print $1,$2}' filename
(3)先打印第一列,然后再打印第二列:
   awk '{print $1 $2}' filename
(4)打印文本文件的总行数:
   awk 'END {print NR}' filename
(5)打印文件的第一行:
   awk 'NR == 1{print}' filename
(6)打印文本的第二行第一列:
   sed -n '2,1p' filename|awk '{print $1}'
(7)获取文本的第四行:
   cat filename|sed -n '4p'
   cat filename|awk 'NR==4{print}'
(8)只查看test.txt文件(100行)内第20到第30行的内容的第一列字段:
   awk '{if(NR>=20 && NR<=30) print $1}' test.txt
(9)只查看test.txt文件(100行)内第20到第30行的内容的字段
    awk '{if(NR>=20 && NR<=30) print}' test.txt
    awk '{if(NR>=20 && NR<=30) print $0}' test.txt
    
7. sed命令
(1)sed -i 's/java/#&s/' filename:在文件中包含Java的行前加入#
    sed -i 's/java/&#/' filename:在文件中包含Java的行后加入#
(2)sed -i '/mysql/i\java' filename: 在文件中包含MySql关键字的行上边插入java
    sed -i '/mysql/a\java' filename:在文件中包含MySql关键字的行下边插入java
(3)sed -i '/mysql/d' filename:删除文件中包含mysql关键字的行
(4)sed -i '3i xiaoxiaosu 1.sh' filename:在文件中的指定行插入xiaoxiaosu 1.sh的内容
(5)sed -n '1,3p' filename|awk '{print}':打印filename文件中第一行,第三列的内容
    
8.Linux常用的监控命令
(1)top: 显示所有正在运行且处于活动状态的进程
        有CPU使用率、内存使用率、交换内存使用大小、调整缓存使用大小、缓冲区使用大小、进程PID、使用的命令等信息。
(2)vmstat: 使用另个参数,第一个参数是采样的时间间隔,第二个参数是采样的次数
           eg. vmstat m n(m:采样的时间间隔,n:采样的次数)
(3)lsof:lsof -i:port(查看端口被哪个进程所占用)
(4)tcpdump:用于捕捉或者过滤网络上特定接口接收或者传输的TCP/IP包
(5)netstat:监控进出网络的包和网络的接口统计

9.Linux top命令
(1)第一列:PID — 进程id
(2)第二列:USER — 进程所有者
(3)第三列:PR — 进程优先级
(4)第四列:NI — nice值。负值表示高优先级,正值表示低优先级
(5)第五列:VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
(6)第六列:RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
(7)第七列:SHR — 共享内存大小,单位kb
(8)第八列:S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
(9)第九列:%CPU — 上次更新到现在的CPU时间占用百分比
(10)第十列:%MEM — 进程使用的物理内存百分比
(11)第十一列:TIME+ — 进程使用的CPU时间总计,单位1/100秒
(12)第十二列:COMMAND — 进程名称(命令名/命令行)


10.linux查看端口8080是否被占用linux命令:

  netstat -ano|findstr 8080 说明:查看占用8080端口的进程  显示占用端口的进程 并显示进程号
   
  $ netstat -ano |findstr 8182
  TCP    0.0.0.0:8182           0.0.0.0:0              LISTENING       13132
  TCP    [::]:8182              [::]:0                 LISTENING       13132

  netstat -ano  查看所有端口 以及进程号
  netstat -ano | grep 8182    不显示进程号
 
  $ netstat -ano|grep 8182
  TCP    0.0.0.0:8182           0.0.0.0:0              LISTENING       13132
  TCP    [::]:8182              [::]:0                 LISTENING       13132

  taskkill  /pid  9476  /f   //说明,运行windows自带taskkill命令,将上面显示的进程号,结束掉。

tail -f 实时查看日志文件 tail -f 日志文件log
tail - 100f 实时查看日志文件 后一百行
tail -f -n 100 catalina.out linux查看日志后100行

tail -n 50 wx.log

示例:查看/var/log/boot.log,只显示最后一行。则执行

tail -n 1  /var/log/boot.log

    tail -n 1000:显示最后1000行

    tail -n +1000:从1000行开始显示,显示1000行以后的

    head -n 1000:显示前面1000行

启动/停止tomcat 
bin/startup.sh #启动tomcat

bin/shutdown.sh #停止tomcat

tail -f logs/catalina.out #看tomcat的控制台输出;

看是否已经有tomcat在运行了 
ps -ef |grep tomcat

kill进程 
kill -9 pid #pid 为相应的进程号

直接查看指定端口的进程pid 
netstat -anp|grep pid

附:Linux一些进程操作

ps -ef | 获取当前服务器所有进程
grep -v grep 相当于grep自己吧自己过滤掉,就是不显示grep
grep seq 过滤出seq
awk 截取 $2 第二个域的pid号
--------------------- 

shudown.sh关闭失败,报pid已存在解决办法:加上"-force"强行stop掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值