面试-linux

本文详细介绍了Linux中常用的命令,如sed用于文本处理,包括统计行数、打印特定行、删除空行等;awk用于数据分析,如统计文件行数、打印特定内容;find用于查找文件,如查找.java文件或包含ERROR的行。还涵盖了内存查看、任务调度、性能监控等相关命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sed

基础详解

参数介绍
-n对匹配行进行处理
=打印匹配行的行号
p打印匹配到的内容

统计文件的行数

sed -n '$=' 1.txt

打印第5行

sed -n '5p' 1.txt

打印空行的行号

sed -n '/^$/=' 1.txt   -n 对匹配行处理    =打印匹配行的行号  p打印匹配到的内容

删除空行

sed '/^$/ d' 1.txt

删除所有注释行

sed '/^#/ d' employee.txt 

打印不含this的行内容

sed '/this/ d' 1.txt

打印非空行的内容

sed -n '/[^$]/p'1.txt 

[^$] ^代表以后面跟着的字符为开头,$代表以前面的字符为结尾

^$联合使用,中间不加任何字符数字,代表匹配空行;

[ ] 在shell正则中表示取反

awk

基础详解

参数介绍
NF
NR

统计文件行数

awk ‘END{print NR}’1.txt

打印空行的行号

awk 'if {NF==0} print NR' 1.txt   

打印文档中单词数小于8的内容

cat 1.txt| awk '{for (i=1;i<=NF;i++) {if  (length($i)<8) print $i}}'

打印第六列的和

cat 1.txt | awk '{sum+=$6} END {print sum}'

打印文件中重复行的行数

awk '{for (i=1;i<=NF;i++){print $i}}' nowcoder.txt|sort|uniq -c|sort|awk '{print $2 $1}'

uniq 比较相邻行是否重复 -c 显示重复行数 和sort结合使用 显示结果第一列为重复次数 第二列为行内容

检查文件第二列是否有重复的行,并打印重复次数

awk '{print $2}' 1.txt|sort|uniq -cd|sort -n

替换

把’a,b,c,'字符串中“,”换成“\n”.
echo "a,b,c" | awk  'BEGIN{RS=","}{print $0}'
RS控制记录分隔符,用于定义换行符 指定换行符为分隔符

echo "a,b,c" | awk -F ',' '{print $1"\n"$2"\n"$3}'
-F , 指定,为列分隔符

echo "a,b,c" | awk 'BEGIN{FS=",";OFS="\n"}{print $1,$2,$3}'

FS字段分隔符
OFS输出字段分隔符

一个日志文件,找出文件里有多少ip

cat t1.log | sort | uniq -c | sort -k 1 -n -r | awk -F '//' '{print $2}'

sort -k 1表示对于每行的第一个字段进行排序,这里即指代表重复记录数的那个字段。
因为sort命令的默认排序是按照ASCII,这就会导致按从大到小进行排序时,数值2会排在数值11的前面,所以需要使用-n 参数指定sort命令按照数值大小进行排序。
-r 表示逆序,即按照从大到小的顺序进行排序。

在这里插入图片描述

seq

输出0到500中7的倍数

seq 0 7 500
seq 尾数
seq 首数 尾数
seq 首数 增量 尾数

find

查找当前文件夹以及子文件夹下所有".java"结尾的文件

find ./ -name *.java

找到当前目录及其子目录中的所有文件中所有包含ERROR的行

for logfile in `find . -name "*.log*"`
do 
     echo "$logfile:" 
     sed -n '/error/=' $logfile
done

文件输出

查找文件 
find -name 1.file 

打印前10行和后10行
head -n 10 1.file > 2.file    tail -n 10 1.file >2.file
 
tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
 
head -n 1000:显示前面1000行 

从第3000行开始,显示1000行。即显示3000~3999行
cat filename | tail -n +3000 | head -n 1000

显示1000行到3000行 
 cat filename| head -n 3000 | tail -n +1000    
 
 查看文件的第5行到第10行
sed -n '5,10p' filename

合并文件a,b 至 文件c

cat a >> b 

> 覆盖写入
>> append模式写入

内存相关

Linux 的基本命令, 查端口8080的状态

netstat -ntlp|grep 8080 
     
   -t : 指明显示TCP端口
   -u : 指明显示UDP端口
  -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
  -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
  -n : 不进行DNS轮询,显示IP(可以加速操作)

任务调度

crontab

查看当前用户下有哪些作业
crontab -l
添加、编辑
crontab -e
禁用
加 #

性能命令

top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

top -p 123 查看pid为123的进程状态

top -p 123 -d 1 -n 2 查看pid为123的进程状态,每隔1秒刷新一次,一共刷新两次

显示cpu信息

cat /proc/cpuinfo

查看内存

free

在这里插入图片描述

tail

tail -f 1.log 实时查看日志

tail -n 5 1.log  显示倒数5行

tail -n +5 1.log 从第5行开始显示

scp

命令用于 Linux 之间复制文件和目录

scp /root/test.txt root@192.168.1.10:/root/  
将 /root/test.txt 拷贝到 192.168.1.10 的 /root/ 目录下,文件名还是 text.txt,使用 root 用户,此时会提示输入远程 root 用户的密码。

scp -r /root/test/ root@192.168.1.10:/root/  
将整个目录 /root/test/ 复制到 192.168.1.10 的 /root/ 下,即递归的复制,使用 root 用户,此时会提示输入远程 root 用户的密码

ps

查看进程

查看所有进程长格式

ps -ef

ls

打印当前文件夹文件

打印详细信息

ls -al 
a所有文件 
l详细信息

软链接 ln

ln -s a target 

硬链接 ln

grep

grep 正则搜索 显示行号-n 查询个数-c 反选-v

查看指定进程 ps -ef | grep pid

找进程号为199的进程 ls -ef|grep 199

某文件中含关键词的行数 grep -c “key” ./file

该目录下以.log结尾的文件中包含关键词a但不包含关键词b的行数 grep “a” ./file | grep -cv “b”

查看磁盘空间df -hl

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值