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

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

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

1. grep

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

使用 grep 的一般语法如下:

grep -options string filename

为了 example在 /etc/passwd 文件中搜索单词“root”:

grep root /etc/passwd

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

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

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

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

env | grep ^HO

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

输出:

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

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 用户的生活中都非常有用和有效,尤其是系统管理员。