5 个最有用的 Linux 文本操作命令
想要提升您的 Linux 游戏水平并了解有关文本操作的更多信息吗?以下是开始您的旅程的前五个 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
一些标准的命令行示例如下:
Options | Example | Description |
---|---|---|
-c | grep -c <string> ./bashrc | Count the number of lines in which the string exists |
-i | grep -i <string> ./bashrc | Perform a case-insensitive search for the specified string |
-o | grep -o <string> file | Prints only the matched string |
-l | grep -l "passwd" | Prints file names in the current directory that match the pattern |
-n | grep -n <string> file | Prints the line number along the line containing the specified string |
string1|string2 | grep "string1|string2" file | Find and prints multiple strings from a file |
同样,您可以将 ^ 元字符与 grep 命令一起使用来显示以某些字符开头的所有匹配字符串。
例如,以下命令通过管道将 env 命令输出作为 grep 的输入,并显示以“HO”开头的变量:
env | grep ^HO
相关:Linux Grep 命令的实用示例
2.awk
awk 是一种功能强大的脚本语言和命令行文本操作工具,可以执行逐行扫描并将行与模式进行比较。 awk 命令的基本语法是在单引号和大括号之间定义的操作,后跟文件名。
awk '{action}' filename
awk '{pattern; action}' filename
该实用程序使用正则表达式搜索文件并执行操作参数中定义的功能。如果不设置模式,awk 会在每一行执行脚本,如下所示:
awk '{print $1}' awk_examples.txt
...其中 $1 显示 awk_examples.txt 文件的第一个字段。
以下命令通过将第二个字段“World”替换为“Alice”来对给定模式执行打印功能,并显示整行 ($0):
echo "Hello World" | awk '{$2="Alice"; print $0}'
输出 :
Hello Alice
同样,您可以使用上面命令中的函数 print $0 来模拟 grep 功能。
awk '/john/{print $0}' /etc/passwd
john:x:1001:1001::/home/john:/bin/sh
3.排序
sort 是另一个 Linux 命令行实用程序,可帮助您以排序的格式显示指定文本文件的内容。例如,您可以通过管道将 awk 命令的输出作为排序实用程序的输入,如下所示:
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
使用随机句子创建一个文件来练习和理解该实用程序的工作原理。
让我们使用 -g 标志进行全局替换,将文件每一行中出现的单词“two”替换为“2”,如下:
sed 's/two/2/g' sed_examples.txt > sed_examples2.txt
同样,使用 -d 标志从文件中删除特定行:
sed '2d' sed_examples.txt
您还可以通过指定行号(4 s/two/2/p)来替换字符串,并仅打印替换的行,如下所示:
sed -n '4 s/two/2/p' sed_examples2.txt
上面命令中的 -n 标志禁用将输入流自动打印到输出。您可以使用此选项来用 sed 替换 grep 实用程序功能。
例如,您可以通过仅包含正则表达式模式 /two/p 来修改上面的命令,这样 -p 标志将仅将行打印到标准输出流。
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 选项结合使用:
Range | Example | Description |
---|---|---|
n- | cut -c 7- filename | Extract character from nth integer till the end of the line |
n-m | cut -b 7-15 filename | Extracts from integer n-m of each line from the input file |
-m | cut -c -7 filename | Extracts lines starting from m till the end of the line |
请注意,您无法使用字段 -f 选项定义文本提取的范围。
使用 Linux 命令操作文本
Linux 提供了许多用于处理和处理文件或文本的程序和工具。可能不需要全部学习它们,因为一旦您很好地掌握了其中一种工具,您就可以轻松地用另一种工具来填补空白,例如使用 sed 作为 grep 或 awk 作为 grep,但并非每个工具都如此。
此外,Linux 命令的学习曲线很陡峭,但是一旦您掌握了该技能,它们就会在任何 Linux 用户(尤其是系统管理员)的生活中变得非常有用和有效。