linux第三部分:文本查看与处理
30.cat:输出文本内容到屏幕
适合查看小文件,100行以内的文件
cat filename(文件名)
#文本重定向
cat << EOF >> test.txt大于号后面是文件名
hello
你好世界
EOF
31.tac:倒序输出
tac filename
32.more:翻页查看(只能向下)
more filename
回车键:一行行的翻
空格键:一屏一屏翻
q 退出
33.less:翻页查看(上下翻页)
less filename
回车键:一行行翻
空格键:一屏一屏翻
上下方向键
q退出
/查找
34.head:查看文件头部
head -n 5 filename
默认s行
35.tail:查看文件尾部
tail -n 5 filename
# 实时查看日志更新
tail -f /var/log/message
Linux文件处理四剑客
36.find: 文件查找
-
命令格式:find 路径 选项1 条件1 选项2 条件2
-
-name:通过文件名查找,可以使用通配符*
-
-type:通过文件类型查找,常见类型f文件、d目录、b快文件、l链接文件、c字符文件、s套接字
-
-mtime:通过修改时间查找,+1一天以上的文件,-1一天以内,1大约一天
-
-size:通过文件大小查找N[bcwkmg]
-
-i:忽略大小写
-
b 块(512字节)
-
c 字节
-
w 字
-
k 千字节
-
M 兆字节
-
G 吉字节
-
+大于-小于
# 单一条件查找 find / -name "*.log" # 多条件查找 find / -iname "*root*" -type f -mtime -1 -size +1k # 对找的文件执行-exec mkdir /root/logs find / -name "*.log" -exec cp {} /root/logs \;
-
37.grep: 字符过滤查找
-
格式:grep 选项 条件 文件路径
-
或者使用管道符过滤前一个命令的执行结果
-
常用选项:
-
-
-n: 显示行号
-
-v: 反向选择(输出不匹配内容的行)
-
-r: 递归查找,在目录中所有文件内查找
-
-i: 忽略大小写匹配,如
grep -i "test" file.txt会匹配Test/TEST等 -
-c: 仅统计匹配的行数,不显示具体内容,如
grep -c "error" log.log -
-l: 只显示包含匹配内容的文件名(多文件 / 递归时用),如
grep -l "config" /etc/* -
-E: 启用扩展正则(等价
egrep),支持|(或)等语法,如grep -E "error|warn" app.log -
-o: 仅提取每行中匹配的片段,而非整行,如
grep -o "[0-9]+" data.txt -
|: 一个命令的执行结果进行再次过滤(管道传递,如
ps -ef | grep "java")正则表达式基础
-
通过
-
符号 含义 普通字母、数字、汉字 匹配自己 . 任意一个字符 [a-z] 匹配任意小写字母 [0-9] 匹配任意一个数字 [a-z A-Z 0-9_] 匹配变量名 [^0-9] 匹配非数字 a|b 匹配非数字 ^ 匹配以什么开头 $ 匹配以什么结尾的内容 ^$ 匹配空白行 () 分组匹配 量词符号
符号 含义 * 匹配任意次0~∞ ? 匹配0或1次,非贪婪模式 + 匹配1~∞ 匹配n次 匹配n~m次 正则案例:
38.sed: 文件流编辑(三剑客老二)
不用打开文件,直接通过sed命令就可以修改文件;
查找、替换、删除、添加、支持正则表达式。
流编辑,按行处理数据,每一行就是一条数据。
-
命令格式:sed [选项] '指令' 文件
-i:对文件本身进行操作,不加则不会修改文件。
-i.bak:修改前对原文件进行备份。
-n:输出时只显示sed执行后的结果。
# sed 指令
# s 替换指令's/old/new/g'
# p 打印结果和-n连用
# a 下一行添加
#i 上一行添加
# sed 替换标记
# g 全局
# d 删除找到的行,也可以指定第几行
## 替换文本内容
sed ‘s/old/new/g' filename
# 输出结果改变,原文件不改变
sed -i ‘s/old/new/g' filename
# 修改并备份
sed -i.bak ‘s/old/new/g' filename
# 修改并备份,新文件修改,原文件不动
# 查找内容
sed '/cn/p' filename
# 输出某行,或某几行
sed -n '1,2 /root/ p' /etc/passwd
sed -n ‘4 p’
# 添加
# 第一行下发添加一行新内容
sed '1 a/hello/' filename
#第三行上方添加一行新的内容
sed '3 i hello' filename
# 删除找到的行
sed '/@/ d' test.tx
# 删除1,2,行
sed '1,2 d' test.tx
- 强大的流式编辑器,支持查找、替换、删除、插入等操作,适用于文本处理和自动化脚本。
39.awk: 一个伪装成命令的脚本语言(三剑客老大)
擅长对列操作,适合处理结构化的文件
| ID | Name | Age | Sex |
|---|---|---|---|
擅长对列操作,适合处理结构化的文件。
命令格式:awk [选项] ‘指令’ 文件
- 选项:
- -F:指定分隔符,/etc/passwd 中的分隔符是 “:”,csv 文件分隔是 “,” 默认是空格或 “\t”。
# $0 一整行内容
# $1 第一列
# $2 第二列
# ...
#$NF 最后一列
# NR是行号
awk '{ print $1 }' filename
# $1表示第一列,filename表示文件
awk -F"," '{ print $2}' test.txt
# ,表示文件分隔,$2表示第二列 后缀文件名,“,”分隔符用双引号,花括号用单引号''
ip a | grep brd | sed -n '3 p' | awk '{print $2}'| awk -F"/" '{print $1}'
# 进行条件查询
cat test.txt
id,name,age,sex
1,张三,18,男
2,李四,19,女
3,王五,20,男
# 使用if()实现条件判断,输出满足条件
awk -F"," '{if($4=="女") print $2}' test.txt
#查询第四列为女的选项,输出第2列内容(姓名),按’,‘分列
awk -F"," '{if($1==2) print $0}' test.txt
#查询第1列为2的选项,输出一整行内容,按’,‘分列
awk -F"," '{if($3>18 && NR >1) print $0}' test.txt
#查询第三列大于18的数字,行号大于1的,输出整行
“从数据中提取你想要的信息,用它事半功倍!”
用法:awk '条件 { 动作 }' 文件
- 适合处理结构化文本,如日志、CSV 文件,支持模式匹配、字段操作、条件过滤等。
浙公网安备 33010602011771号