Linux-初学者系列——篇幅7_文本编辑和处理命令

文本编辑和处理命令-目录

上篇: Linux-初学者系列——篇幅6_系统基础操作管理

一、系统基本编辑命令

vi\vim,vim是vi命令的增强版,例如:首行缩进、高亮显示代码等。

默认centos7系统可能会没有vim命令,需要用命令安装下

安装vim软件工具包
yum install -y vim
语法格式:
vim [option] [file]
vim    选项    文件

1、vim编辑命令模式

vim有三种模式:普通模式、编辑模式、命令模式。

01 普通模式

vim命令打开一个文件后,默认状态时普通模式。

这个模式中,不能编辑输入操作,可以移动光标,可以执行下操作命令进行删除、复制、粘贴等。

02 编辑模式

‘i l o O a A r R s S’等字母进入编辑模式才可以执行编辑操作。

在这里插入图片描述

03 命令模式

在普通模式,输入‘:’或者‘/’ 或者‘?’,光标会自动定位到最低行。

命令模式中,可以执行保存、退出、搜索、行号等相关操作。

此处内容看第一篇文章

2、编辑文件技巧

01 批量删除多行指定信息
  • 进入批量编辑模式ctrl+v可视块
  • 批量删除操作d或者x
02 批量增加多列指定信息
  • 进入批量编辑模式ctrl+v可视块
  • 选择批量编辑区域 利用方向键
  • 进入插入编辑模式 大小字母 I 或者shift + i
  • 开始编辑内容信息
  • 退出批量编辑操作esc
03 编辑常见问题
错误1:没有指定编辑信息
[root@bogon ~]# vim

在这里插入图片描述

错误2:路径信息不存在
[root@bogon ~]# vim zhang/zhang/zhang.txt

在这里插入图片描述

该错误表示编辑文件对应路径信息不存在

错误3:编辑出现异常中断

在这里插入图片描述

当前文件异常时因为文件没有保存退出或者虚拟机断开提示。

恢复R

vi异常问题处理方式:

恢复临时文件:vi -r 需要编辑的文件

显示临时文件: vi -r/-L

取消生成临时文件:vi -n 需要编辑的文件

二、文件编辑命令

1、echo

echo命令可以将文本显示到Linux命令行上,或者重定向符号放入到指定的文件中。
在这里插入图片描述

语法格式:
echo [选项] [文本]
常用参数:
序号 参数选项 说明
1 -n 不要自动换行
2 -E 不解析转义字符(默认参数)
3 -e 如果字符串中出现下面字符,需要进行特别处理,不能将它当作一般文字输出。
\a:发出警告
\b:删除前一个字符
\c:最后不加上换行字符
\f:换行但光标依旧停留到原来的位置
\n:换行且光标移动到行首
\r:光标移动到行首,但是不换行
\t:插入tab
实操
01 -n参数不换行
[root@bogon ~]# echo 'zhang01'; echo  'zhang02'
zhang01
zhang02
[root@bogon ~]# echo -n 'zhang01'; echo  'zhang02'
zhang01zhang02
[root@bogon ~]# 
02 打印输出使用转义符号
\n
[root@bogon ~]# echo 'zhang01\nzhang02'
zhang01\nzhang02
[root@bogon ~]# echo -e 'zhang01\nzhang02'
zhang01
zhang02

\r
[root@bogon ~]# echo -e 'zhang01\rzhang02'
zhang02

\t 制表符
[root@bogon ~]# echo -e '01\tzhang\tlinux\n02\tzhang\tlinux'
01	zhang	linux
02	zhang	linux
03 输出信息写到指定文件中
>/>>表示重定向,可以在命令执行后输出到屏幕的信息存到指定文件夹中
> 覆盖
[root@bogon ~]# cat zhang.txt
文件里内容忽略...
[root@bogon ~]# echo huanghun > zhang.txt
[root@bogon ~]# cat zhang.txt
huanghun

在这里插入图片描述

>> 追加
[root@bogon ~]# cat zhang.txt
huanghun
[root@bogon ~]# echo huanghun >> zhang.txt
[root@bogon ~]# cat zhang.txt
huanghun
huanghun

在这里插入图片描述

2、cat

cat命令显示单个文件内容,或者将几个文件内容连接起来显示。

还可以从标准输入中读取内容并显示,生产环境中,它与重定向或者追加符号配合使用。

语法格式:
cat [选项] [文件]
常用参数:
序号 参数选项 说明
1 -n 从第一行开始对所有输出的内容按行编号
2 -b 与-n功能类似,但是忽略显示空白行行号
3 -s 当遇到有连续两行以上的空白行,就替换成一行空白行
4 -E 在每一行的行尾显示$符号
实操
01 实现多行信息内容的编辑操作
[root@bogon ~]# cat > zhang.txt <<EOF
> zhang01
> zhang02
> zhang03
> zhang04
> EOF
[root@bogon ~]# cat zhang.txt
zhang01
zhang02
zhang03
zhang04
[root@bogon ~]# 

cat > zhang.txt 表示打开zhang.txt文件

zhang.txt <<EOF…EOF 表示向打开的文件输入信息

02 实现联合多个文件信息并重定向指定文件中
[root@bogon ~]# cat zhang.txt
zhang01
zhang02
zhang03
zhang04
[root@bogon ~]# cat /dev/null > zhang.txt
[root@bogon ~]# cat zhang.txt
[root@bogon ~]# 
序号 cat命令常用功能 说明
1 查看文件内容 例: cat zhang.txt
2 多个文件合并成一个 例:cat zhang01.txt zhang02.txt > newzhang.txt
3 非交互式编辑或追加内容到文件尾部 cat >> zhang.txt <<EOF
file
EOF
4 清空文件内容 使用cat /dev/null > zhang.txt
上述命令可以将文件内容清空,但是文件还是存在的。

三、文件查看命令

1、more

more命令类似cat,cat命令是将整个文件的内容一次性显示到屏幕上。

而more会一页一页显示文件内容。

语法格式:
more [选项] [文件]
常用参数:
序号 参数/特殊功能 说明
1 -num 指定屏幕显示大小为num行
2 +num 从行号num开始显示
3 Enter 向下显示1行
4 空格键 向下滚动一屏
5 b 返回上一屏
6 = 输出当前行的行号
7 /查找的文本 查找指定文本
8 v 调用vi编辑器
9 q 退出more查看状态
实操
01 只查看指定几行信息
[root@bogon ~]# more -3 /etc/services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
--More--(0%)
02 只查看指定行之后的内容信息
[root@bogon ~]# more +333 -3 /etc/services
ica             1494/tcp                        # Citrix ICA Client
ica             1494/udp                        # Citrix ICA Client
wins            1512/tcp                        # Microsoft's Windows Internet Name
--More--(2%)

2、less

less命令类似于more命令,可以分页显示文件内容,比more功能强大。

less命令在读取文件内容的时候,不需要一次性将整个文件加载后显示,而是会根据需要来加载文件内容。

并且less命令支持[page up] [page down]等按键功能,便于查看文件内容。

语法格式:
less [选项] [文件]
常用参数:
序号 参数选项 说明
1 -i 搜索时忽略大小写
2 -m 显示类似于more命令的进度百分比
3 -N 显示每行的行号
4 -s 将连续空行压缩为一行显示
5 -e 当文件显示到结尾时自动退出文件,若不使用此选项则需要使用交互命令q退出less

交互操作:

再交互模式下,less命令也是基于more命令和vi命令的。

序号 子命令 说明
1 b 向前翻一页
2 空格键 向后翻一页
3 向上滚动一行
4 ↓/回车键 向下滚一行
5 /字符串 向下搜索字符串
6 ?字符串 向上搜索字符串
7 n 向后查找下一个匹配的文本
8 N 向前查找前一个匹配的文本
9 v 进入vi编辑界面
10 G 移动到最后一行
11 g 移动到第一行
12 h 显示帮助界面
13 q 退出less命令

3、head

head命令用于显示文件头部的内容,执行head命令默认会输出文件的开头10行内容。

语法格式:
head [选项] [文件]
常用参数:
序号 参数选项 说明
1 -n<行数> 制定显示的行数
2 -c<字节数> 指定显示的字节数
3 -q 不显示包含给定文件名的文件头
4 -v 总是显示包含给定文件名的文件头
实操:
01 显示文件前几行

在这里插入图片描述

[root@bogon ~]# head -n 2 /etc/services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
[root@bogon ~]# 

4、tail

语法格式:
tail [选项] [文件]
常用参数:
序号 参数选项 说明
1 -n<行数> 指定显示的字节数
2 -c<数目> 指定显示的行数
3 -f 实时输出文件变化后的追加的数据
4 -F 功能等同于-f --retry
5 –retry 不停尝试打开文件直到打开为止,与-f参数合用
6 –pid=进程号 与-f参数连用,在进程结束后自动退出tail命令
7 -s秒数N 监视文件变化的间隔秒数
8 -q 不显示包含给定文件名的文件头
9 -v 总是显示包含给定文件名的文件头
实操:
01 显示文件指定最后几行的信息
[root@bogon ~]# tail -2 zhang.txt
2
abc
[root@bogon ~]# tail -n 2 zhang.txt
2
abc
[root@bogon ~]# 
02 从第几行开始显示文件内容
[root@bogon ~]# cat zhang.txt
qqqqsss1111111
qqqqsss1111111
省略中间内容...
1
2
abc
[root@bogon ~]#
[root@bogon ~]# tail -n +20 zhang.txt
5
6
省略中间内容...
1
2
abc
[root@bogon ~]# 
03 tail命令实时监控文件的变化

主要用于日志文件信息,便于排查系统或程序的问题。

[root@bogon ~]# ll /var/log/messages
-rw-------. 1 root root 870936 4月  21 11:10 /var/log/messages
[root@bogon ~]# 

[root@bogon ~]# cat /var/log/messages
省略中间内容...
[root@bogon ~]# 

[root@bogon ~]# tail -5 /var/log/messages
Apr 21 11:00:01 bogon systemd: Starting Session 16 of user root.
Apr 21 11:01:01 bogon systemd: Started Session 17 of user root.
Apr 21 11:01:01 bogon systemd: Starting Session 17 of user root.
Apr 21 11:10:01 bogon systemd: Started Session 18 of user root.
Apr 21 11:10:01 bogon systemd: Starting Session 18 of user root.
[root@bogon ~]# 

[root@bogon ~]# tail -f /var/log/messages
Apr 21 10:52:24 bogon gnome-software-service.desktop: 02:52:24:0178 Gs  no app for changed [email protected]
Apr 21 10:52:24 bogon gnome-software-service.desktop: 02:52:24:0178 Gs  no app for changed [email protected]
Apr 21 10:52:24 bogon gnome-software-service.desktop: 02:52:24:0183 Gs  no app for changed [email protected]
Apr 21 10:52:24 bogon gnome-software-service.desktop: 02:52:24:0191 Gs  no app for changed [email protected]
Apr 21 11:00:01 bogon systemd: Started Session 16 of user root.
Apr 21 11:00:01 bogon systemd: Starting Session 16 of user root.
Apr 21 11:01:01 bogon systemd: Started Session 17 of user root.
Apr 21 11:01:01 bogon systemd: Starting Session 17 of user root.
Apr 21 11:10:01 bogon systemd: Started Session 18 of user root.
Apr 21 11:10:01 bogon systemd: Starting Session 18 of user root.

// 重启服务
[root@bogon ~]# systemctl restart NetworkManager
[root@bogon ~]# tail -f /var/log/messages
Apr 21 11:14:55 bogon dnsmasq[1586]: using nameserver 114.114.114.114#53
Apr 21 11:14:55 bogon dnsmasq[1586]: using nameserver 8.8.8.8#53
Apr 21 11:14:55 bogon nm-dispatcher: req:3 'up' [ens33]: new request (4 scripts)
Apr 21 11:14:56 bogon systemd: Started Network Manager Wait Online.
Apr 21 11:14:56 bogon NetworkManager[5893]: <info>  [1682046896.0008] manager: NetworkManager state is now CONNECTED_GLOBAL
Apr 21 11:14:56 bogon nm-dispatcher: req:4 'connectivity-change': new request (4 scripts)
Apr 21 11:14:56 bogon systemd: Unit iscsi.service cannot be reloaded because it is inactive.
Apr 21 11:14:56 bogon nm-dispatcher: req:3 'up' [ens33]: start running ordered scripts...
Apr 21 11:14:56 bogon systemd: Unit iscsi.service cannot be reloaded because it is inactive.
Apr 21 11:14:56 bogon nm-dispatcher: req:4 'connectivity-change': start running ordered scripts...

四、文本数据处理命令

1、grep

grep是从文本文件或管道数据流中筛选匹配的行及数据,如配合正则表达式一块使用功能会更强大。

语法格式:
grep 选项 匹配模式 文件

匹配模式:是要获取的内容,可以是普通的文字符号也可以是正则表达式。

选项参数:
序号 选项参数 说明
1 -v 显示不匹配的行,或者也就是排除某些行,显示其他行信息
2 -n 显示匹配的行及行号
3 -i 不区分大小写,默认是区分大小写
4 -c 只统计匹配的行数,注意不是匹配的次数
5 -w 以单词为单位进行过滤
6 -o 只输出匹配的内容
实操:
01 grep过滤不包含qqq字符串的行(-v参数实践)
[root@bogon ~]# cat grep zhang.txt
qqqqsss1111111
qqqqsss1111111
省略中间内容...
1
2
abc

[root@bogon ~]# grep -v 'qqq' zhang.txt
2222222
3333333
4
省略中间内容...
1
2
abc
02 grep显示过滤后的内容的行号(-n参数实践)
[root@bogon ~]# grep -n 'qqq' zhang.txt
1:qqqqsss1111111
2:qqqqsss1111111
省略中间内容...
15:qqqqsss1111111
16:qqqqsss1111111
[root@bogon ~]# 
03 grep不区分大小写进行过滤(-i参数实践)
[root@bogon ~]# cat grep_zhang.txt
zhang
linux
zhang01
zhang02
H5
[root@bogon ~]# grep -i 'zhang' grep_zhang.txt
zhang
zhang01
zhang02
04 grep计算匹配的字符串的数量(-c参数实践)
[root@bogon ~]# cat grep_zhang.txt
zhang
linux
zhang01
zhang02
H5
[root@bogon ~]# grep -c 'zhang' grep_zhang.txt
3
05 grep只输出匹配的内容(-o参数实践)
[root@bogon ~]# grep -o 'zhang' grep_zhang.txt
zhang
zhang
zhang
[root@bogon ~]# 
06 grep搜索符合要求的用户(-w参数实践)
[root@bogon ~]# cat grep_zhang.txt
zhang
linux
zhang01
zhang02
H5
[root@bogon ~]# grep -w 'zhang' grep_zhang.txt
zhang

2、tr

tr命令可以读取数据信息进行替换,缩减或者删除字符,并将结果显示出来。

语法格式:
tr 选项 字符1 字符2
选项参数:
序号 选项参数 说明
1 -d 删除字符 ※
2 -s 保留连续字符发第一个字符,删除其他字符
3 -c 使用第一个字符串的补集,取反
实操:
01 将文件中的‘abc’替换成’zhang’
[root@bogon ~]# cat tr_test.txt
I am zhang
linux
H5
ui
[root@bogon ~]# tr 'zhang' '12345' tr_test.txt
tr: 额外的操作数 "tr_test.txt"
Try 'tr --help' for more information.
[root@bogon ~]# tr 'zhang' '12345' <  tr_test.txt
I 3m 12345
li4ux
H5
ui
[root@bogon ~]# 

tr命令读取文件内容需要用到标准输入重定向符号<,并且tr替换信息是按照字符1对1进行替换的。

02 将文件中出现的‘qqq’过滤掉,不做输出显示。
[root@bogon ~]# tr -d 'linux' < tr_test.txt
I am zhag

H5

在特定场景下,利用tr命令可以对指定字符进行有针对的操作处理。

猜你喜欢

转载自blog.csdn.net/m0_62181310/article/details/130323036
今日推荐