目录
一、文本处理
1.1 内容匹配
1.1.1 grep文件内容搜索
搜索文件包含匹配内容
grep [keyword] [filename]
-v
取反-i
不区分大小写-E
[keyword]支持正则
1.1.2 awk正则匹配内容
正则表达式
awk '/^root/ {print}' /etc/passwd
/pattern/
正则内容, 上文中为^root
行号判断与使用
awk '{if(NR>2&&NR<4) printf $0}' /etc/passwd
awk 'NR > 10 {print}' /etc/passwd
NR
行号
字段分割
awk -F ':' '{print $1}' /etc/passwd
awk -F ':' '{print $NF}' /etc/passwd
-F
指定分隔符, 每一行都会被分割成一组数组数据$1
内置变量, 每组的第一个字段, 也就是index[0], $0是整列$NF
内置变量, 每行最后一个字段
1.2 内容打印
1.2.1 head显示文件头部内容
显示文件头部前几行,默认10行数
head [filename]
-c [-]
打印前几个字节-n [-]
打印前几行
1.2.2 tail显示文件底部内容
显示文件尾部前几行,默认10行数
tail [filename]
-c [-]
打印后几个字节-n [-]
打印后几行-f
实时打印
1.2.3 sed文件内容显示
sed [script-only-if-no-other-script] [filename]
-n
抑制模式空间的自动打印-e
将脚本添加到要执行的命令中-f
将脚本文件的内容添加到要执行的命令中--follow-symlinks
在进行处理时遵循符号链接-i[SUFFIX]
在适当的位置编辑文件(如果提供了后缀,可以进行备份)-c
在-i模式下,使用copy而不是重命名-l N
为l命令指定所需的行包长度-r
在脚本中使用扩展的正则表达式-s
把文件看作是独立的,而不是单一的连续的长流-u
从输入文件加载最小数量的数据,并经常刷新输出缓冲区-z
用NUL字符分隔的行
显示文件1~2行的内容
sed -n 1,2p file.txt
隐藏第一行的数据显示
sed '1d' file.txt
正则的方式替换, 将old替换成new
需要注意的, 如果使用正则+
需要变成\+
sed 's/old/new/g' file.txt //old替换为new显示
s / i
s替换操作不修改源数据, i修改源数据g / d
标志, g代表全局, i代表忽略大小写, d代表删除old
需要替换的内容new
替换的新内容
1.2.4 cut列提取
生成一个data.txt, 第一列名称, 第二列年龄
life 99 2020-1-1
xxit 88 2828-1-1
ggb 77 2011-9-1
提取年龄列的数据
cut -d " " -f 2-2 data.txt
-d [symbol]
指定分隔符-f [start-end]
指定提取的列-c [start-end]
按字符位置提取
1.3 内容处理
1.3.1 内容替换
1.3.2 sort内容排序
如果一个数值内容不指定-n, 那么它会使用每一位ASCII的方式进行排序
sort filename
//根据第三列(UID)进行排序
sed 's/:/ /g' /etc/passwd | sort -n -k 3
-n
如果内容是数据, 可以根据数值进行排序-r
逆向排序-k
根据某列号排序
1.3.3 uniq内容去重
去重文件中的重复行, 并且去除头部的空格
●-c在最前面显示, 重复的数据行数
去重的问题:
去重只会去重相邻的重复数据, 下图中 1并没有出现想想中的很多次, 所以需要结合sort使用
1.4 重定向
1.4.1 输出重定向
输出设备 显示器(/dev/sdtout
标准输出|/dev/sdterr
标准错误输出)
将标准输出
的内容重定向到文件上(重复会进行覆盖文件
)
ll > test132.log
将标准输出
的内容重定向到文件上(重复会进行追加
)
ls -a >> ceshi.log
将标准错误输出的报错信息重定向到文件上(注意2旁边没有空格)
asdas 2>> test.log
如果命令正确则直接写入文件 如果命令错误将错误文件写入到绑定的&1中(test.log)
命令 >> test.log 2>&1
命令 &>> 文件 //是上面一条命令的缩写
将标准输出导入su11.log
错误输出导入error.log
命令 >> su11.log 2>> error.log
1.4.2 输入重定向
输入设备 键盘(/dev/stdin标准输入)
wc [options] < filename.txt
-c
统计字节数-w
统计单词数-l
统计行数
使用管道费进行重定向, 管道符: 将前一个命令的输出传递给后面的命令
echo "Hello" | wc -m
使用管道符统计ESTABLISHED
的端口数量
netstat -an | grep ESTABLISHED | wc -l
1.5 命令相关
1.5.1 搜索命令的位置
whereis [cmd_name]
-b
搜索只看所在位置-m
搜索man手册的位置
查看命令所在位置 和 别名
1.6 命名别名
注意: alias的命名方式重启失效
1.6.1 设置别名
例如将ls设置为ls --color=never
alias ls = 'ls --color=never'
永久生效需要修改 ~/.bashrc或者/etc/bashrc隐藏文件
alias ls = 'ls --color=never'
更改立即生效
source ~/.bashrc
1.6.2 查看别名
alias
1.6.3 删除别名
unalias [aliasName]
二、历史命令
2.1查看历史命令
(保存在 ~/.bash_history
这个文件只记录上次登录的历史命令)
history
-w
强制写入~/.bash_history文件-c
清空历史命令
历史命令的配置/etc/profile
默认保留1000条 (HISTSIZE)
2.2 执行历史命令
!n //重复执行第n条历史命令
!! //重复执行上一次命令
!字符串 //重复执行最后以该字符的命令
标签:文件,log,1.2,文本处理,命令,sed,内容,终端,Linux
From: https://blog.csdn.net/m0_74100826/article/details/143902633