5 个最有用的 Linux 文本操作命令

Linux 开发人员遵循创建完成一项任务并且做得很好的小程序的理念。 以 Linux 文本处理工具为例,它们是轻量级的,具有模块化的功能。 尽管这些文本操作工具在复杂性和功能上有所不同,但它们在图形用户界面不可用的环境中会派上用场。

本文介绍了读取文件和使用正则表达式对选定文本执行操作的最佳 Linux 工具。 它还涵盖了它们最基本的功能和示例,以便更好地理解。

1. grep

grep 是一个 Linux 文本操作实用程序,它在文件或文本中搜索称为正则表达式的字符串或模式。 grep 工具属于包括 egrep、fgrep 和 grep 在内的实用工具系列,其中 fgrep 是最快的,而 grep 是最简单的。

使用 grep 的一般语法如下:

grep -options string filename

例如,要在 /etc/passwd 文件中搜索单词“root”:

grep root /etc/passwd

一些入门的标准命令行示例是:

选项 例子 描述
-C grep -c ./bashrc 计算字符串存在的行数
-一世 grep -i ./bashrc 对指定字符串执行不区分大小写的搜索
-这 grep -o 文件 仅打印匹配的字符串
-l grep -l “密码” 打印当前目录中与模式匹配的文件名
-n grep -n 文件 沿包含指定字符串的行打印行号
字符串1|字符串2 grep “string1|string2” 文件 从文件中查找并打印多个字符串

同样,您可以使用 ^ 使用 grep 命令显示以特定字符开头的所有匹配字符串的元字符。

例如,以下命令通过管道将 env 命令输出作为 grep 的输入,并显示以 ” 开头的变量“:

env | grep ^HO

相关:Linux Grep 命令的实际示例

2.awk

awk 是一种功能强大的脚本语言和命令行文本操作工具,可以执行逐行扫描并将行与模式进行比较。 awk 命令的基本语法是在单引号和大括号之间定义的操作,后跟文件名。

awk '{action}' filename
awk '{pattern; action}' filename

该实用程序使用正则表达式搜索文件并执行 action 参数中定义的函数。 如果不设置模式,awk 会在每一行执行脚本,如下所示:

awk '{print $1}' awk_examples.txt

…在哪里 1美元 显示第一个字段 awk_examples.txt 文件。

以下命令通过替换第二个字段“在给定模式上执行打印功能”世界“ 和 ”爱丽丝, 并显示整行 ($0):

echo "Hello World" | awk '{$2="Alice"; print $0}'

输出:

Hello Alice

同样,您可以使用该功能 打印 $0 从上面的命令模拟 grep 功能。

awk '/john/{print $0}' /etc/passwd
john:x:1001:1001::/home/john:/bin/sh

3.排序

sort 是另一个 Linux 命令行实用程序,可帮助您以排序格式显示指定文本文件的内容。 例如,您可以通过管道将 awk 命令的输出作为 sort 实用程序的输入,如下所示:

awk '{print $1}' awk_examples.txt | sort > sort_text.txt
cat sort_text.txt

输出:

相关:如何在 Linux 中使用 sort 对文本文件进行排序

4.sed

sed 或流编辑器将输入作为字符流,并对指定的文本执行过滤和文本转换(删除、替换和替换)。

您可以在脚本中使用它并以非交互方式编辑文件。 因此,该实用程序的最基本目的是替换字符串/字符。 一般语法是:

sed 's/string/substitution/option' file

使用随机句子创建一个文件,以练习和理解该实用程序的工作原理。

让我们替换单词“” 在文件的每一行上用 “2“ 使用 -G 全局替换标志,如下:

sed 's/two/2/g' sed_examples.txt > sed_examples2.txt

同样,使用 -d 标志从文件中删除特定行:

sed '2d' sed_examples.txt

您还可以通过指定行号 (4 秒/两个/2/p) 并且只打印替换的行,如下所示:

sed -n '4 s/two/2/p' sed_examples2.txt

-n 上面命令中的标志禁用输入流到输出的自动打印。 您可以使用此选项将 grep 实用程序功能替换为 sed。

例如,您可以通过仅包含正则表达式模式来修改上面的命令 /二/p 使得 -p flag 只会将行打印到标准输出流。

sed -n '/two/p' sed_examples2.txt

相关:这 10 个 sed 示例将使您成为 Linux 高级用户

5.切

cut 是另一个命令行实用程序,可以从行或文件中剪切/提取部分文本。 它根据指定的字段、字符或字节位置剪切文本,并将结果通过管道传输到标准输出。

该实用程序采用以下语法:

cut <options> file

使用 -b 使用指定字节或字节范围剪切部分或内容的选项:

cut -b 1 cut_examples.txt

使用 -C 通过指定字符的位置来提取文本的标志:

cut -c 1,3,5 cut_examples.txt

最后,您还可以通过指定字段来提取文本 -F 选项和 -d 对于空格或字段分隔符:

cut -d " " -f 1 cut_examples.txt

这是范围列表,其中包含您可以与字符一起使用的示例和描述 -C 和字节 -b 选项:

范围 例子 描述
n- cut -c 7- 文件名 从第 n 个整数中提取字符直到行尾
纳米 cut -b 7-15 文件名 从输入文件中每行的整数 nm 中提取
-m 剪切 -c -7 文件名 提取从 m 开始到行尾的行

请注意,您不能使用字段定义文本提取的范围 -F 选项。

使用 Linux 命令处理文本

Linux 提供了许多用于处理和处理文件或文本的程序和工具。 可能不需要全部学习它们,因为一旦您掌握了一个,就可以轻松地用另一个来填补空白,例如使用 sed 作为 grep 或 awk 作为 grep,但这并非适用于每个工具。

此外,Linux 命令有一个陡峭的学习曲线,但是一旦你掌握了这项技能,它们就会被证明在任何 Linux 用户的生活中都非常有用和有效,尤其是系统管理员。