喵星之旅-狂奔的兔子-linux文本文件工具

作为以gedit为主要工具的使用者,面对40g的日志文件确实难于下手,不得不使用sed截取了内容,顺便整理了linux上文本工具的使用。未全部验证,不排除有错误。

vi

在Linux系统中,vi是一种非常流行的文本编辑器,它以其高效的键盘快捷键和强大的文本处理功能而受到用户的喜爱。就算是图形化为主的使用者,也必然需要掌握基本使用。

vi编辑器的模式

vi编辑器有三种模式,分别是命令模式(Command Mode)、插入模式(Insert Mode)和底行模式(Last Line Mode)。

命令模式:

在此模式下,用户可以使用键盘快捷键来移动光标、删除字符、复制和粘贴文本等。

默认情况下,vi编辑器处于命令模式。

插入模式:

在此模式下,用户可以输入文本。

要进入插入模式,用户需要在命令模式下按“i”(在当前光标位置前插入文本)、“a”(在当前光标位置后插入文本)、“o”(在当前行的下面新建一行并进入插入模式)等快捷键。

底行模式:

在此模式下,用户可以执行保存文件、退出vi编辑器、设置vi环境、查找和替换文本等操作。

要进入底行模式,用户需要在命令模式下按“:”键。

vi编辑器的基本操作

打开文件:

在终端中输入“vi 文件名”命令,然后按Enter键,即可打开指定的文件。

例如,要打开名为“test.txt”的文件,可以输入“vi test.txt”。

移动光标:

使用h(左)、j(下)、k(上)、l(右)键进行光标移动。

使用Ctrl+f(向下翻页)、Ctrl+b(向上翻页)进行页面切换。

0键(数字零)移动到行首,$键移动到行尾。

插入文本:

按i键在当前光标位置前插入文本。

按a键在当前光标位置后插入文本。

按o键在当前行的下面新建一行并进入插入模式。

按A键在当前行的末尾位置添加文本。

按I键在当前行的开始处添加文本(非空字符的行首)。

按O键在当前行的上面新建一行。

删除文本:

按x键删除当前光标所在位置的字符。

按dd键删除当前行。

按ndd键向下删除当前行在内的n行。

dw删除从光标位置到一个单词的末尾,d$删除从光标位置到行尾,d0删除从光标位置到行首。

复制和粘贴:

按yy键复制当前行。

按nyy键复制当前行向下的n行。

按p键将复制的文本粘贴到光标下方。

按P键将复制的文本粘贴到光标上方。

yw复制从光标开始到词尾的字符,nyw复制从光标开始的n个单词。

y^复制从光标到行首的内容,y$复制从光标到行尾的内容。

撤销和重做:

按u键撤销上一步操作。

按U键撤销对当前行的所有操作(注意与u的区别)。

按Ctrl+r键重做上一次被撤销的命令。

查找和替换:

在命令模式下按“/”键,然后输入要查找的文本,按Enter键即可开始查找。

按n键跳转到下一个匹配的文本。

按N键跳转到上一个匹配的文本。

在底行模式下,可以使用“:s/old/new/”命令替换当前行中首次出现的old为new。

使用“:s/old/new/g”命令替换当前行中所有的old为new。

使用“:n,ms/old/new/g”命令替换从n到m行里所有的old为new。

使用“:%s/old/new/g”命令替换当前文件里所有的old为new。

设置行号:

在底行模式下,使用“:set nu”命令显示行号。

使用“:set nonu”命令取消显示行号。

保存和退出:

在底行模式下,使用“:w”命令保存文件。

使用“:q”命令退出编辑器。

如果文件已修改且不想保存,可以使用“:q!”命令强制退出。

使用“:wq”命令保存文件并退出编辑器。

注意事项

请务必注意大小写,因为vi编辑器对大小写敏感。

如果不确定自己处于哪种模式,可以按两次Esc键以确保返回到命令模式。

vim

vim和vi使用基本一致,也有些许差别,一般直接套用vi命令即可。

Vim功能更强大:Vim是Vi的增强版,支持更多的编辑功能和插件。Vim提供了语法高亮显示、多窗口编辑、宏录制等高级功能,而Vi则是一个基本的文本编辑器,功能相对较为简单。

多级撤销:在Vi中,按“u”键只能撤销上次命令,但在Vim中,可以无限制地撤销之前的操作。

gedit

gedit是linux桌面环境下的最主要文本编辑器,主要用于轻度编辑和记录内容。一般默认安装。桌面环境打开后其实也可以有更多的选择,例如vscode等.

启动Gedit

通过图形界面启动:

在GNOME桌面环境中,可以通过应用程序菜单找到Gedit并启动。

也可以双击要编辑的文件,然后在弹出的打开方式中选择Gedit。

通过命令行启动:

打开终端,输入“gedit”命令并回车,即可启动Gedit。

如果要打开特定文件,可以在“gedit”命令后加上文件路径和名称,如“gedit /path/to/file.txt”。

如果编辑的文件需要管理员权限,在账号权限足够的其概况下可以提权操作,如“sudo gedit /path/to/file.txt”。

基本编辑操作

打开文件:

在Gedit窗口中,点击菜单栏的“文件”选项,然后选择“打开”。

在弹出的打开对话框中,选择要打开的文件并点击“打开”按钮。

新建文件:

点击菜单栏的“文件”选项,然后选择“新建文档”或“新建标签页”。

也可以直接在命令行中输入“gedit newfile.txt”来创建一个新文件(如果文件不存在,Gedit会自动创建)。

保存文件:

编辑完文件后,点击菜单栏的“文件”选项,然后选择“保存”或“另存为”。

也可以使用快捷键Ctrl+S来保存当前文件,Ctrl+Shift+S来另存为其他文件。

复制、剪切和粘贴:

使用快捷键Ctrl+C复制选定文本,Ctrl+X剪切选定文本,Ctrl+V粘贴文本。

也可以通过菜单栏的“编辑”选项来进行这些操作。

撤销和重做:

使用快捷键Ctrl+Z撤销最近的编辑操作,Ctrl+Y重做撤销的操作。

sed

对于过大文件,显然图形环境压力巨大,常见的日志文件可能几十g。假设日志文件开始都有时间2024-12-09 10:11:11 这样的,则可以进行裁减.

例如,将文件nohup.out中截取2024年12月9日10点到12点的内容到另一个文件bunny1209.log

1
sed -n "/2024-12-09 10/,/2024-12-09 12/p" nohup.out >> bunny1209.log

sed(stream editor)是一种流编辑器,它在Linux和类Unix系统中被广泛使用,用于对文本文件进行查找、替换、删除、插入等操作。sed通过逐行读取输入文件(或标准输入),然后根据指定的脚本(通常是一系列的编辑命令)对每一行进行处理,并将处理后的结果输出到标准输出(或指定的输出文件)。

基本语法

sed的基本语法如下:

1
2
3
4
sed [选项]... '脚本' 文件...
选项:sed命令可以接受一些选项来修改其行为,如-e(指定脚本)、-f(从文件中读取脚本)、-i(直接修改文件内容,而不是输出到标准输出)等。
脚本:sed脚本包含一系列的编辑命令,这些命令用于指定如何处理每一行文本。脚本通常被单引号或双引号包围。
文件:要处理的文本文件。如果省略文件,sed将从标准输入读取数据。

常用命令

以下是一些常用的sed命令:

1
2
3
4
5
6
s/原字符串/新字符串/g:将每一行中的所有原字符串替换为新字符串。g表示全局替换,即替换每一行中的所有匹配项。
d:删除匹配的行。
p:打印匹配的行(通常与-n选项一起使用,以抑制默认的输出)。
a\ 新行内容:在匹配行的后面添加新行内容。
i\ 新行内容:在匹配行的前面添加新行内容。
c\ 新行内容:用新行内容替换匹配的行。

示例

替换文本:

1
sed 's/foo/bar/' file.txt

将file.txt中每一行的第一个foo替换为bar。

全局替换:

1
sed 's/foo/bar/g' file.txt

将file.txt中每一行的所有foo替换为bar。

删除行:

1
sed '/pattern/d' file.txt

删除包含pattern的行。

打印行:

1
sed -n '/pattern/p' file.txt

打印包含pattern的行(-n选项用于抑制默认输出)。

添加新行:

1
sed '/pattern/a\ This is a new line' file.txt

在包含pattern的行的后面添加“This is a new line”。

直接修改文件:

1
sed -i 's/foo/bar/g' file.txt

直接修改file.txt,将每一行的foo替换为bar,而不是输出到标准输出。

注意事项

sed命令对大小写敏感。

脚本中的特殊字符(如/、&、*等)可能需要转义。

使用-i选项时要小心,因为它会直接修改文件内容,而不是创建备份。

grep

Linux中的grep命令是一种强大的文本搜索工具,它用于在文件中查找特定的字符串或模式,并将匹配的行显示出来。

基本语法

1
grep [选项] 模式 [文件...]

其中,选项是可选的,用于定制grep的功能;模式是要搜索的字符串或正则表达式;文件是要搜索的文件名,可以是一个或多个。如果省略文件参数,则默认从标准输入中读取数据。

常用选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-i:忽略大小写,进行不区分大小写的匹配。
-v:反向匹配,只输出不匹配指定字符串的行。
-r:递归搜索,对目录进行递归搜索,匹配包含指定模式的文件。
-l:只输出文件名,只列出包含匹配模式的文件名,而不会输出具体的行内容。
-n:显示行号,在输出结果中显示匹配字符串所在的行号。
-c:统计匹配字符串出现的次数。
-A num:显示匹配行以及其后的num行内容。
-B num:显示匹配行以及其前的num行内容。
-C num:显示匹配行及其前后的num行内容。
--color:高亮显示匹配到的字符串。
-E:启用扩展正则表达式。
-F:将样式视为固定字符串的列表(即不使用正则表达式)。
-w:整字匹配,只匹配整个单词,而不是匹配包含指定模式的部分。
-x:只显示全行匹配的行。
-s:不显示错误信息。
-d recurse 或 -R:递归搜索目录及其子目录。

模式

普通字符串:可以直接指定需要搜索的普通字符串。

正则表达式:使用正则表达式进行模式匹配,如“a.c”表示匹配任意字符a后面跟随任意字符c的字符串。

元字符:在正则表达式中用来表示特殊含义的字符,如.表示匹配任意字符,*表示匹配0次或多次,[]表示匹配指定范围内的字符等。

使用实例

在文件中查找包含“hello”的行:

1
grep "hello" file.txt

忽略大小写查找包含“hello”的行:

1
grep -i "hello" file.txt

查找不包含“world”的行:

1
grep -v "world" file.txt

查找包含“hello”的行并显示行号:

1
grep -n "hello" file.txt

递归搜索目录中包含“pattern”的文件:

1
grep -r "pattern" /path/to/directory

仅显示包含“pattern”的文件名:

1
grep -l "pattern" file1 file2

awk

AWK是一种在Linux和Unix系统中广泛使用的文本处理工具,它以其强大的文本解析和处理能力而著称。

基本语法

AWK的基本语法结构为:

1
awk [选项] '模式 {动作}' 文件名

其中,选项用于指定AWK命令的一些参数,如字段分隔符等;模式用于匹配文件中的行,可以是正则表达式或关系运算符模式;动作则是对符合模式的行执行的操作,如打印、计算等。

常用选项

1
2
3
4
-F:指定输入文件字段分隔符,默认为空白字符。
-v:定义变量,可以在AWK程序中使用这些变量。
BEGIN:在处理输入之前执行一段代码,通常用于初始化变量或打印标题。
END:在处理完所有输入后执行一段代码,通常用于输出总结信息。

内置变量

AWK提供了许多内置变量,可以在脚本中直接使用:

1
2
3
4
5
6
7
8
9
10
11
$0:代表整个行。
$n:代表第n个字段,n为字段号。
NR:表示记录(行)数。
NF:表示当前行的字段数。
FS:表示字段分隔符,可以通过-F选项或内置命令设置。
RS:表示记录分隔符,默认为换行符。
四、常用动作
print:打印指定的字段或整行。
if:条件测试,根据条件执行不同的动作。
for:循环,用于遍历数组或执行重复操作。
=:赋值,用于修改字段值或变量值。

使用实例

打印文件中的所有行:

1
awk '{print}' 文件名

打印文件的第一个字段:

1
awk '{print $1}' 文件名

使用冒号作为字段分隔符,打印第一个字段:

1
awk -F: '{print $1}' /etc/passwd

过滤出字段3大于10的行并输出:

1
awk '$3 > 10 {print}' 文件名

计算文件中第一个字段的总和并输出结果:

1
awk '{sum += $1} END {print sum}' 文件名

自定义输出格式,按照固定宽度打印前两个字段:

1
awk '{printf "%-10s %-5s\n", $1, $2}' 文件名

统计文件中包含指定模式的行数:

1
awk '/pattern/ {count++} END {print count}' 文件名

高级用法

多文件处理:AWK可以同时处理多个文件,每个文件的处理可以是相同的或不同的。

数组和关联数组:AWK支持数组和关联数组,可以用于存储和处理复杂的数据结构。

自定义函数:用户可以编写自定义函数来扩展AWK的功能,以满足特定的需求。

正则表达式:AWK支持正则表达式匹配和替换,可以用于更复杂的文本处理任务。

应用场景

AWK常用于日志分析、生成报告、文本提取与转换等场景。例如,可以使用AWK分析Nginx访问日志,统计访问IP次数、访问最多的页面等信息。

文章目录
  1. vi
    1. vi编辑器的模式
      1. 命令模式:
      2. 插入模式:
      3. 底行模式:
    2. vi编辑器的基本操作
      1. 打开文件:
      2. 移动光标:
      3. 插入文本:
      4. 删除文本:
      5. 复制和粘贴:
      6. 撤销和重做:
      7. 查找和替换:
      8. 设置行号:
      9. 保存和退出:
    3. 注意事项
  2. vim
  3. gedit
    1. 启动Gedit
      1. 通过图形界面启动:
      2. 通过命令行启动:
    2. 基本编辑操作
      1. 打开文件:
      2. 新建文件:
      3. 保存文件:
      4. 复制、剪切和粘贴:
      5. 撤销和重做:
  4. sed
    1. 基本语法
    2. 常用命令
    3. 示例
    4. 注意事项
  5. grep
    1. 基本语法
    2. 常用选项
    3. 模式
    4. 使用实例
  6. awk
    1. 基本语法
    2. 常用选项
    3. 内置变量
    4. 使用实例
    5. 高级用法
    6. 应用场景
|