打印第5行
sed -n '5p' 1.txt
打印空行的行号
awk 'if {NF==0} print NR' 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正则中表示取反
输出0到500中7的倍数
seq 0 7 500 seq 尾数 seq 首数 尾数 seq 首数 增量 尾数
统计文件的行数
awk ‘END{print NR}’1.txt
sed -n '$=' 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
查找当前文件夹以及子文件夹下所有".java"结尾的文件
find ./ -name *.java
找到当前目录及其子目录中的所有文件中所有包含ERROR的行
for logfile in `find . -name "*.log*"`
do
echo "$logfile:"
sed -n '/error/=' $logfile
done
文件输出
读取log文件的crash消息,找到后输出前10行和后10行
查找文件 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行
cat filename | tail -n +3000 | head -n 1000 :从第3000行开始,显示1000行。即显示3000~3999行
cat filename| head -n 3000 | tail -n +1000 显示1000行到3000行
sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。
内存相关
Linux 的基本命令, 查端口8080的状态
netstat -ntlp|grep 8080
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
-n : 不进行DNS轮询,显示IP(可以加速操作)
替换
把'a,b,c,'字符串中“,”换成“\n”.(awk)
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 表示逆序,即按照从大到小的顺序进行排序。
合并文件a,b 至 文件c
cat a >> b
> 覆盖写入
>> append模式写入
任务调度
crontab
查看当前用户下有哪些作业:crontab -l
添加、编辑:crontab -e
禁用:加#
常用的linux命令有哪些?
ls mkdir rm cp mv touch cat
top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
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 -al a所有文件 l详细信息
软链接 ln -s a target 硬链接 ln
创建目录 mkdir
修改权限 chmod
查看文件:
移动文件mv 也可以重命名
复制文件cp
删除文件 rm -r 递归删除 -f删除只读文件
通配符?单个字符,*多个字符,[a-z]字符集
grep 正则搜索 显示行号-n 查询个数-c 反选-v
查看指定进程 ps -ef | grep pid
查看命令历史 history
查看磁盘空间df -hl
查看文件大小du
查找文件 find [目录] 以名字查找-name “h*”以h开头
终止一个进程 kill -9 pid
如何防止新人误操作rm -rf
找进程号为199的进程 ls -ef|grep 199
某文件中含关键词的行数 grep -c "key" ./file
该目录下以.log结尾的文件中包含关键词a但不包含关键词b的行数 grep "a" ./file | grep -cv "b"