zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux基础笔记9 | 文件内容查看与处理

Linux文件基础笔记 处理 查看 内容
2023-09-14 09:15:28 时间

文件内容基本查看

echo:显示输出文本内容

指定文本显示在 linux 命令行上,或者通过重定向符号写入到指定的文件中

## 打印文本到标准输出
[root@vm10 /]# echo helloworld
helloworld
[root@vm10 /]# echo 'helloworld'
helloworld
[root@vm10 /]# echo "helloworld"
helloworld
[root@vm10 /]#

## 将单行文本追加文件中
[root@vm10 home]# echo "helloworld" >ceshi.info
[root@vm10 home]# echo "helloworld" >>ceshi.info
[root@vm10 home]# cat ceshi.info
helloworld
helloworld
[root@vm10 home]#

## 不换行输出(默认换行)
[root@vm10 home]# echo -n "helloworld" && echo "Yes"
helloworldYes
[root@vm10 home]# echo  "helloworld" && echo "Yes"
helloworld
Yes
[root@vm10 home]#

## 打印变量内容
[root@vm10 home]# myname=hj
[root@vm10 home]# echo $myname
hj
[root@vm10 home]#

## 彩色打印
[root@vm10 home]# echo -e "\033[34m helloworld \033[0m"
 helloworld
[root@vm10 home]#

## 彩色背景打印
[root@vm10 home]# echo -e "\033[45;37m helloworld \033[0m"
 helloworld
[root@vm10 home]#

在这里插入图片描述

cat:合并文件或者查看文件内容

连接多个文件并且打印到屏幕输出,或者重定向到指定文件中

## 基本的查看文件内容
[root@vm10 home]# cat ceshi.info
helloworld
helloworld
[root@vm10 home]#

## 查看文件内容并显示编号
[root@vm10 home]# cat -n ceshi.info
     1  helloworld
     2  helloworld
[root@vm10 home]#

## 多个文件合并成一个文件
[root@vm10 test]# ls
1.txt  2.txt
[root@vm10 test]# cat 1.txt 2.txt >3.txt
[root@vm10 test]# cat 3.txt
123
234
[root@vm10 test]#

## 创建并编辑新文件(在新的空行内执行快捷键 ctrl+d 或者 ctrl+c 结束编辑)
[root@vm10 test]# ls
1.txt  2.txt  3.txt
[root@vm10 test]# cat >4.txt
789
^C
[root@vm10 test]# cat 4.txt
789
[root@vm10 test]#

## 非交互式编辑和追加内容到文件尾部(EOF 成对出现)
[root@vm10 test]# cat >5.txt<<EOF
> 10 11 12
> EOF
[root@vm10 test]# cat 5.txt
10 11 12
[root@vm10 test]#

## 清空文件内容
[root@vm10 test]# cat /dev/null > 1.txt
[root@vm10 test]# cat 1.txt
[root@vm10 test]#

翻页查看操作

more:分页显示内容

交互操作:

  • 空格键:向下滚动一屏
  • b:返回上一屏
  • /文本内容:查看指定的文本内容
  • =:输出当前行的行号
  • v:调用 vi 编辑器
  • !命令:调用 shell ,并执行
  • q:退出 more
# 从行号10开始显示
[root@vm10 test]# more +10 /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
test:x:1000:1000::/home/test:/bin/bash

## 显示前5行内容
[root@vm10 test]# more -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

less:分页显示文件内容

more 的高级版本

交互操作:

  • b:向前翻一页
  • 空格键:向后翻一页
  • q:退出
  • /文本内容:向下搜索文本内容
  • ?文本内容:向上搜索文本内容
## 显示每行行号
      1 root:x:0:0:root:/root:/bin/bash
      2 bin:x:1:1:bin:/bin:/sbin/nologin
      3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
      4 adm:x:3:4:adm:/var/adm:/sbin/nologin
      5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
      6 sync:x:5:0:sync:/sbin:/bin/sync
      7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
      8 halt:x:7:0:halt:/sbin:/sbin/halt
      9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
     10 operator:x:11:0:operator:/root:/sbin/nologin
     11 games:x:12:100:games:/usr/games:/sbin/nologin
     12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
     13 nobody:x:99:99:Nobody:/:/sbin/nologin
     14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
     15 dbus:x:81:81:System message bus:/:/sbin/nologin
     16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
     17 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
     18 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
     19 chrony:x:998:996::/var/lib/chrony:/sbin/nologin
     20 zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
     21 nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin
     22 mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
     23 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
     24 test:x:1000:1000::/home/test:/bin/bash
~
~
~
~
(END)

head:显示文件头部内容

默认显示前10行

## 默认显示文件头部内容
[root@vm10 test]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@vm10 test]#

## 显示指定的前5行数
[root@vm10 test]# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@vm10 test]#

tail:显示文件内容尾部

默认输出最后10行

## 输出最后10行
[root@vm10 test]# tail /etc/passwd
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
test:x:1000:1000::/home/test:/bin/bash
[root@vm10 test]#

## 输出最后5行
[root@vm10 test]# tail -n 5 /etc/passwd
zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
test:x:1000:1000::/home/test:/bin/bash
[root@vm10 test]#

## 实时查看文件追加的内容
[root@vm10 test]# tail -f /var/log/messages
Sep  4 21:12:43 vm10 su: (to test) root on pts/0
Sep  4 21:14:45 vm10 su: (to test) root on pts/0
Sep  4 21:15:48 vm10 su: (to test) root on pts/0
Sep  4 21:16:36 vm10 su: (to test) root on pts/0
Sep  4 22:01:01 vm10 systemd: Started Session 10 of user root.
Sep  4 22:15:27 vm10 kernel: perf: interrupt took too long (2511 > 2500), lowering kernel.perf_event_max_sample_rate to 79000
Sep  4 22:19:20 vm10 yum[2332]: Installed: mlocate-0.26-8.el7.x86_64
Sep  4 23:01:01 vm10 systemd: Started Session 11 of user root.
Sep  4 23:23:28 vm10 kernel: perf: interrupt took too long (3200 > 3138), lowering kernel.perf_event_max_sample_rate to 62000
Sep  5 00:01:01 vm10 systemd: Started Session 12 of user root.

文件内容数据截取

grep 文本过滤

常见参数:

  • -v:显示不匹配的行
  • -n:显示匹配的行及行号
  • -i:不区分大小写
  • -c:只统计匹配的行数
  • -E:扩展正则
## 过滤不包含/sbin/nologin的行
[root@vm10 test]# grep -v "/sbin/nologin" /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
test:x:1000:1000::/home/test:/bin/bash
[root@vm10 test]#

## 过滤不包含/sbin/nologin的行的行数
[root@vm10 test]# grep -vc "/sbin/nologin" /etc/passwd
6
[root@vm10 test]#

## 过滤不包含/SBIN/nologin的行
[root@vm10 test]# grep -vi "/SBIN/nologin" /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
test:x:1000:1000::/home/test:/bin/bash
[root@vm10 test]#

tr 替换或删除字符

从标准输入中替换、删除字符,并将结果写到标准输出,不改变源文件内容

## 将文本的2删除
[root@vm10 test]# cat 2.txt
234
[root@vm10 test]# tr -d '2' < 2.txt
34
[root@vm10 test]# cat 2.txt
234
[root@vm10 test]#

## 将文本中的2替换成1
[root@vm10 test]# cat 2.txt
234
[root@vm10 test]# tr '2' '1' < 2.txt
134
[root@vm10 test]#

## 统一将小写转大写
[root@vm10 test]# cat 1.txt
aaa
bbb
CCC
DDDD
[root@vm10 test]# tr '[a-z]' '[A-Z]'<1.txt
AAA
BBB
CCC
DDDD
[root@vm10 test]#

## 将字母替换成数字
[root@vm10 test]# tr '[a-d]' '[0-3]'<1.txt
000
111
CCC
DDDD
[root@vm10 test]#

待补充