Linux 常用命令汇总(三):查看文件 & 内容处理

简介: Linux 常用命令汇总(三):查看文件 & 内容处理

一、查看文件及内容处理命令

1.1 cat

1.1.1 介绍

cat 是 Linux 和其他 Unix-like 系统中一个非常基础且常用的命令,用于显示、合并或复制文本文件的内容

1.1.2 使用方法

cat [选项] [文件...]

1.1.3 参数详解

  • [选项]:控制 cat 命令的行为。
  • [文件...]:要显示内容的文件列表。

1.1.4 常见选项

  • -n:显示行号。
  • -b:显示非空行的行号。
  • -s:将连续的空行压缩为单个空行。
  • -E:显示行尾的 $ 符号。
  • -T:显示制表符为 ^I。
  • -v:显示不可打印的字符。

1.1.5 常见使用案例

1.1.5.1 显示文件内容
cat myfile.txt

这将输出 myfile.txt 的全部内容到标准输出(通常是终端)

1.1.5.2 显示文件内容并包括行号
cat -n myfile.txt

这将输出 myfile.txt 的内容,并在每行前面加上行号

1.1.5.3 将多个文件的内容合并并显示
cat file1.txt file2.txt

这将连续显示 file1.txt 和 file2.txt 的内容

1.1.5.4 压缩空行
cat -s myfile.txt

这将输出 myfile.txt 的内容,但连续的空行将只显示一个

1.1.6 注意事项

cat 命令主要用于查看小文件的内容。对于非常大的文件,使用 cat 可能会导致终端滚动得非常快,不易于阅读。在这种情况下,使用 more 或 less 命令来分页查看文件内容可能更为合适。

cat 命令也常用于将多个文件的内容合并到一个文件中,通过重定向输出到一个新文件来实现。

当处理包含特殊字符的文件时,使用 -v 选项可以显示这些不可打印的字符,这在调试某些文本文件问题时可能很有用。

1.2 tac

1.2.1 介绍

tac 命令与 cat 命令的功能相反,它用于反向显示文件的内容

1.2.2 使用方法

tac [文件...]

1.2.3 参数详解

  • [文件...]:要反向显示内容的文件列表。

tac 命令没有像 cat 那样的众多选项,因为它专注于执行一个简单的任务:反向显示文件内容

1.2.4 常见使用案例

1.2.4.1 反向显示文件内容
tac myfile.txt

这将输出 myfile.txt 的全部内容,但顺序是反向的,即最后一行首先显示,第一行最后显示

1.2.5 注意事项

tac 命令在处理非常大的文件时可能会很慢,因为它需要读取整个文件并反向输出内容。

与 cat 命令类似,tac 主要用于文本文件。如果尝试对非文本文件使用 tac,可能会得到不可预测的输出。

由于 tac 是反向显示文件内容,它在某些特定的文本处理或调试场景中可能会很有用,例如从文件末尾开始查看日志文件。

1.3 more

1.3.1 介绍

more 是一个在 Linux 和其他 Unix-like 系统中常用的命令,用于分页显示文件内容

1.3.2 使用方法

more [文件...]

1.3.3 参数详解

[文件...]:要分页显示内容的文件列表

1.3.4 常见操作

  • 空格键:显示下一页内容。
  • Enter键:显示下一行内容。
  • q:退出查看。
  • f:显示当前行号。
  • =:显示当前文件名和行号。
  • /:搜索特定字符串。
  • n:跳过当前搜索到的字符串的下一个匹配项。
  • N:跳过当前搜索到的字符串的上一个匹配项。
  • h:显示帮助信息。

1.3.5 常见使用案例

1.3.5.1 分页显示文件内容
more myfile.txt

这将允许用户逐页查看 myfile.txt 的内容。使用空格键或 Enter 键来浏览文件

1.3.5.2 搜索文件中的特定字符串
more myfile.txt

在 more 的交互模式下,输入 / 并跟上你要搜索的字符串,例如 /searchstring,然后按 Enter 键。more 会高亮显示第一个匹配项,并允许你使用 n 和 N 键来导航到下一个或上一个匹配项。

1.3.6 注意事项

more 命令对于查看大文件或长输出特别有用,因为它允许用户在不滚动整个终端窗口的情况下查看文件内容。

与 cat 命令不同,more 提供了交互式的浏览体验,用户可以按需查看文件的不同部分。

对于非常大的文件,more 可能不是最高效的工具,因为它需要逐页加载内容。在这种情况下,less 命令可能是一个更好的选择,因为它提供了更强大的导航和搜索功能。

1.4 less

1.4.1 介绍

less 是一个在 Linux 和其他 Unix-like 系统中广泛使用的命令,用于查看文件内容,并提供了比 more 更加强大和灵活的导航和搜索功能

1.4.2 使用方法

less [文件...]

1.4.3 常见操作

空格键:显示下一页内容。

b:显示上一页内容。

Enter键:显示下一行内容。

k 或 上箭头:显示上一行内容。

j 或 下箭头:显示下一行内容。

G:直接跳到文件末尾。

g:直接跳到文件开头。

/:搜索特定字符串(按 Enter 键后搜索)。

?:反向搜索特定字符串。

n:跳到下一个搜索匹配项。

N:跳到上一个搜索匹配项。

h 或 ?:显示帮助信息。

q:退出查看。

y:复制当前行到剪贴板(需支持剪贴板的终端)。

p:粘贴剪贴板内容(需支持剪贴板的终端)。

1.4.4 常见使用案例

1.4.4.1 使用 less 查看文件内容
less myfile.txt

这将打开 less 查看器,并显示 myfile.txt 的内容。你可以使用上述的键盘快捷键来导航和搜索文件内容

1.4.4.2 在 less 中搜索字符串

在 less 查看器中,输入 / 并跟上你要搜索的字符串,然后按 Enter 键。less 会高亮显示第一个匹配项,并允许你使用 n 和 N 键来导航到下一个或上一个匹配项。

1.4.5 注意事项

less 命令是 more 命令的增强版,提供了更多的功能和灵活性。如果你经常需要查看和搜索长文件,less 会是一个更好的选择。

less 允许用户向前和向后翻页,这在某些情况下比 more 更方便。

less 支持在终端中复制和粘贴文本,这对于处理文本文件非常有用。

less 的帮助屏幕提供了所有可用命令的概览,这对于新用户来说非常有用。

1.5 head

1.5.1 介绍

head 是一个在 Linux 和其他 Unix-like 系统中常用的命令,用于显示文件的开头部分

1.5.2 使用方法

head [选项] [文件...]

1.5.3 参数详解

  • -n [行数]:显示文件开头指定行数的内容。如果不指定行数,则默认显示前 10 行。
  • -c [字节数]:显示文件开头指定字节数的内容。
  • -v:显示文件名作为输出的前缀。
  • -q:静默模式,不显示文件名。

1.5.4 常见使用案例

1.5.4.1 显示文件的前 10 行
head myfile.txt

这将输出 myfile.txt 的前 10 行内容

1.5.4.2 显示文件的前 5 行
head -n 5 myfile.txt

这将输出 myfile.txt 的前 5 行内容

1.5.4.3 显示文件的前 20 字节
head -c 20 myfile.txt

这将输出 myfile.txt 文件开头的前 20 字节内容

1.5.5 注意事项

  • head 命令非常适合于快速查看文件的开头部分,尤其是当文件非常大时。
  • head 的输出通常用于快速检查日志文件、配置文件或其他文本文件的开头部分。
  • 如果你只关心文件的开头几行,使用 head 会比使用 cat 或 less 更高效,因为它不需要读取整个文件。

1.6 tail

1.6.1 介绍

tail 是 Linux 和其他 Unix-like 系统中常用的命令,用于显示文件的末尾部分

1.6.2 使用方法

tail [选项] [文件...]

1.6.3 参数详解

  • -n [行数]:显示文件末尾指定行数的内容。如果不指定行数,则默认显示最后 10 行。
  • -c [字节数]:显示文件末尾指定字节数的内容。
  • -f:实时追踪文件变化,并显示新添加的内容。常用于查看日志文件。
  • -q:静默模式,不显示文件名。
  • -v:显示文件名作为输出的前缀。

1.6.4 常见使用案例

1.6.4.1 显示文件的最后 10 行
tail myfile.txt

这将输出 myfile.txt 的最后 10 行内容

1.6.4.2 显示文件的最后 20 行
tail -n 20 myfile.txt

这将输出 myfile.txt 的最后 20 行内容

1.6.4.3 实时追踪查看日志文件的新内容
tail -f /var/log/syslog

这将开始显示 /var/log/syslog 文件的最后 10 行,并在文件有新内容添加时实时更新显示

1.6.5 注意事项

  • tail 命令特别适用于查看日志文件的最新条目,因为它允许你快速查看文件末尾的内容。
  • 使用 -f 选项时,tail 会保持打开状态,并在文件变化时实时更新显示。这对于监控日志文件特别有用。
  • 与 head 命令类似,tail 也非常高效,因为它不需要读取整个文件,而只是文件的末尾部分。

1.7 cut

1.7.1 介绍

cut 是一个在 Linux 和其他 Unix-like 系统中用于从文件或标准输入中提取列的命令行工具

1.7.2 使用方法

cut [选项] [文件]

1.7.3 参数详解

  • -b:按字节位置提取列。
  • -c:按字符位置提取列。
  • -d:指定字段分隔符,默认为制表符。
  • -f:指定要提取的字段。
  • -n:与 -b 或 -c 一起使用,不分割多字节字符。

1.7.4 常见使用案例

1.7.4.1 提取文件的第一列
cut -d ',' -f 1 filename.csv

这将从名为 filename.csv 的 CSV 文件中提取第一列的内容,假设字段是由逗号分隔的

1.7.4.2 提取文件的第二和第三列
cut -d ',' -f 2,3 filename.csv

这将提取第二列和第三列的内容

1.7.4.3 提取文件的第一到第四字节
cut -b 1-4 filename.txt

这将从名为 filename.txt 的文本文件中提取每行的第一到第四个字节

1.7.5 注意事项


cut 命令对于处理由固定分隔符(如逗号、制表符等)分隔的文本文件非常有用。

如果文件包含多字节字符(如 UTF-8 编码的字符),使用 -n 选项可以防止 cut 命令错误地分割这些字符。

cut 命令主要用于处理简单的文本文件,对于复杂的文本处理任务,可能需要使用更强大的文本处理工具,如 awk。

1.8 split

1.8.1 介绍

split 是一个在 Linux 和其他 Unix-like 系统中用于将大文件分割成较小的文件的命令行工具

1.8.2 使用方法

split [选项] [原始文件] [输出前缀]

1.8.3 参数详解

  • -b:指定每个输出文件的大小(以字节为单位)。
  • -C:与 -b 类似,但尽量保持每行的完整性。
  • -l:指定每个输出文件的行数。
  • -a:指定输出文件名的后缀长度。
  • -d:使用数字后缀代替默认的字母后缀。

1.8.4 常见使用案例

1.8.4.1 将文件分割成每个 1MB 的小块
split -b 1M largefile.log smallfile

这将创建一个名为 smallfileaa,smallfileab,smallfileac 等的序列文件,每个文件大约 1MB 大小(最后一个文件可能小于 1MB)

1.8.4.2 将文件分割成每个包含 1000 行的文件
split -l 1000 largefile.log smallfile

这将创建一个序列文件,每个文件包含 1000 行(最后一个文件可能行数少于 1000)

1.8.4.3 使用数字后缀
split -b 1M -d largefile.log smallfile

这将创建名为 smallfile00,smallfile01,smallfile02 等的序列文件,使用数字作为后缀

1.8.5 注意事项

split 命令对于处理大型文件非常有用,可以将它们分割成更易于管理和处理的较小文件。

通过指定每个文件的大小或行数,你可以控制输出文件的大小。

默认情况下,split 命令使用字母作为输出文件名的后缀,但你可以使用 -d 选项来改为使用数字。

分割后的文件可以通过 cat 命令或其他文本处理工具重新合并。

1.9 paste

1.9.1 介绍

paste 是一个在 Linux 和其他 Unix-like 系统中用于并排合并文件的命令行工具

1.9.2 使用方法

paste [选项] [文件...]

1.9.3 参数详解

  • -d:指定分隔符,用于分隔不同的文件列。
  • -s:序列模式,将每个文件的内容作为一个单独的序列处理。

1.9.4 常见使用案例

1.9.4.1 将两个文件的内容按列合并,使用制表符作为分隔符
paste file1.txt file2.txt

这将输出两个文件的内容,每行的对应列之间用制表符分隔

1.9.4.2 使用逗号作为分隔符合并文件
paste -d, file1.txt file2.txt

这将使用逗号作为分隔符来合并文件内容

1.9.4.3 序列模式合并,每个文件的内容作为一个单独的序列处理
paste -s file1.txt file2.txt

在序列模式下,paste 会将每个文件的内容作为一个单独的块处理,而不是逐行合并

1.9.5 注意事项

  • paste 命令主要用于将两个或多个文件的内容按列合并,这在数据比较、分析等场景下非常有用。
  • 默认情况下,paste 使用制表符作为分隔符,但你可以使用 -d 选项指定其他分隔符。
  • 如果文件的行数不同,paste 会根据最短的文件长度来输出合并后的结果。

1.10 sort

1.10.1 介绍

sort 是 Linux 和其他 Unix-like 系统中用于对文本行进行排序的命令行工具

1.10.2 使用方法

sort [选项] [文件]

1.10.3 参数详解

  • -n:按照数值大小排序,而不是按照字符编码排序。
  • -r:逆序排序,即从大到小或从 Z 到 A。
  • -k:指定按照哪一列进行排序。
  • -t:指定字段分隔符,与 -k 一起使用来指定排序的字段。
  • -u:去重,只输出唯一的行。
  • -o:将排序后的结果输出到指定的文件,而不是标准输出。

1.10.4 常见使用案例

1.10.4.1 对文件内容进行排序
sort filename.txt

这将输出 filename.txt 文件内容的排序版本

1.10.4.2 按照数值排序
sort -n numbers.txt

这将按照数值大小对 numbers.txt 文件中的行进行排序

1.10.4.3 逆序排序
sort -r filename.txt

这将输出 filename.txt 文件内容的逆序排序版本

sort -t: -k2 filename.txt

假设 filename.txt 是由冒号分隔的字段组成的文件,该命令将按照第二个字段进行排序

1.10.4.5 去重并输出到指定文件
sort -u filename.txt -o sorted_unique.txt

这将去除 filename.txt 文件中的重复行,并将排序后的唯一行输出到 sorted_unique.txt 文件中

1.10.5 注意事项

  • sort 命令默认按照字符编码进行排序,这对于文本文件通常是足够的。
  • 如果文件包含多列数据,你可以使用 -t 和 -k 选项来指定按照哪一列进行排序。
  • 对于大型文件,sort 命令可能需要一些时间来执行排序操作。

1.11 uniq

1.11.1 介绍

uniq 是一个在 Linux 和其他 Unix-like 系统中用于从文本文件中去除重复行的命令行工具

1.11.2 使用方法

uniq [选项] [文件]

1.11.3 参数详解

  • -c:在每行旁边显示该行在文件中出现的次数。
  • -d:仅显示重复的行。
  • -u:仅显示不重复的行。
  • -i:在比较行时忽略大小写。
  • -s:跳过前 N 个字符后再进行比较。
  • -w:仅比较每行的前 N 个字符。

1.11.4 常见使用案例

1.11.4.1 去除文件中的重复行
sort filename.txt | uniq

首先使用 sort 命令对 filename.txt 文件进行排序,然后通过管道将排序后的输出传递给 uniq,从而去除连续重复的行

1.11.4.2 显示每行出现的次数
sort filename.txt | uniq -c

这将在每行旁边显示该行在文件中出现的次数

1.11.4.3 仅显示重复的行
sort filename.txt | uniq -d

这只会输出那些在文件中至少出现两次的行

1.11.4.4 仅显示不重复的行,并忽略大小写
sort filename.txt | uniq -u -i

这将输出文件中所有不重复的行,并且在比较时忽略大小写

1.11.4.5 跳过前 3 个字符后再比较行
sort filename.txt | uniq -s 3

这将跳过每行的前三个字符,然后基于剩余的字符来比较和去除重复行

1.11.5 注意事项

  • uniq 命令只能去除连续重复的行,因此通常与 sort 命令结合使用。
  • 使用 -c、-d 或 -u 选项可以进一步控制输出的内容。
  • uniq 命令对于处理大型文本文件并去除其中的重复行非常有用。

1.12 wc

1.12.1 介绍

wc 是 Linux 和其他 Unix-like 系统中用于计算文件中字节数、字数和行数的命令行工具

1.12.2 使用方法

wc [选项] [文件...]

1.12.3 参数详解

  • -b:只计算字节数。
  • -c:计算字节数,与 -b 相同。
  • -l:只计算行数。
  • -w:只计算字数。
  • -m:只计算字符数。
  • --bytes、--chars、--lines、--words:分别用于计算字节、字符、行数和字数,这些选项是更明确的替代 -b、-m、-l 和 -w。

1.12.4 常见使用案例

1.12.4.1 计算文件的字节数、字数和行数
wc filename.txt

这将输出三个值:字节数、字数和行数

1.12.4.2 仅计算行数
wc -l filename.txt

或者

wc --lines filename.txt
1.12.4.3 仅计算字数
wc -w filename.txt

或者

wc --words filename.txt

这将只输出 filename.txt 文件中的字数

1.12.4.4 计算多个文件的统计信息
wc file1.txt file2.txt

这将分别输出 file1.txt 和 file2.txt 的统计信息

1.12.5 注意事项

  • wc 命令默认会同时输出字节数、字数和行数。
  • 当你只关心其中一个统计信息时,可以使用相应的选项来仅输出该信息。
  • 对于非常大的文件,wc 命令可能会需要一些时间来计算统计信息。

1.13 iconv

1.13.1 介绍

iconv 是一个用于字符集转换的命令行工具

1.13.2 使用

iconv [选项] [源文件 [目标文件]]

1.13.3 参数详解

-f 或 --from-code:指定源字符集。

-t 或 --to-code:指定目标字符集。

-o 或 --output:指定输出文件。如果未指定,iconv 会将转换后的内容输出到标准输出。

-l 或 --list:列出所有支持的字符集。

-s 或 --silent:不显示警告信息。

-c:忽略无法转换的字符。

1.13.4 常见使用案例

1.13.4.1 将文件从 UTF-8 转换为 ISO-8859-1
iconv -f UTF-8 -t ISO-8859-1 input.txt -o output.txt

这将把 input.txt 文件从 UTF-8 字符集转换为 ISO-8859-1 字符集,并将结果输出到 output.txt 文件中

1.13.4.2  列出所有支持的字符集
iconv -l

这将列出 iconv 支持的所有字符集

1.13.4.3 将文本从标准输入转换为 UTF-8 并输出到标准输出
echo "Some text" | iconv -f ISO-8859-1 -t UTF-8

这将把从标准输入读取的文本从 ISO-8859-1 转换为 UTF-8,并将结果输出到标准输出

1.13.5 注意事项

  • 字符集转换可能不是完全可逆的,特别是在涉及到不兼容的字符时。
  • 在转换字符集时,应确保目标字符集能够表示源字符集中的所有字符。否则,转换过程中可能会丢失数据或产生乱码。
  • iconv 的支持取决于系统上的库和安装情况,不是所有字符集都在所有系统上可用。

1.14 dos2unix

1.14.1 介绍

dos2unix 是一个用于将 DOS/Windows 格式的文本文件转换为 Unix/Linux 格式的命令行工具

1.14.2 使用方法

dos2unix [选项] 文件...

1.14.3 参数详解

  • -n:仅显示哪些文件是 DOS/MAC 格式,而不进行转换。
  • -c:仅显示转换了多少个文件。
  • -v:显示详细的转换信息。
  • -o:将转换后的内容输出到标准输出,而不修改原始文件。
  • -s:静默模式,不显示任何消息。

1.14.4 常见使用案例

1.14.4.1 将文件从 DOS/Windows 格式转换为 Unix/Linux 格式
dos2unix filename.txt

这将把 filename.txt 文件从 DOS/Windows 格式转换为 Unix/Linux 格式

1.14.4.2 显示哪些文件是 DOS/MAC 格式,但不进行转换
dos2unix -n file1.txt file2.txt

这将检查 file1.txt 和 file2.txt 是否是 DOS/MAC 格式,并显示结果,但不进行实际转换

1.14.4.3 将转换后的内容输出到标准输出
dos2unix -o filename.txt

这将把 filename.txt 文件从 DOS/Windows 格式转换为 Unix/Linux 格式,并将转换后的内容输出到标准输出,而不是修改原始文件

1.14.5 注意事项

  • 在转换文件之前,最好备份原始文件,以防转换过程中出现任何问题。
  • dos2unix 工具只能处理文本文件。对于二进制文件或其他非文本文件,使用此工具可能会导致数据损坏。
  • 在处理大量文件或目录时,使用 -c 或 -v 选项可以帮助你跟踪转换的进度。

1.15 diff

1.15.1 介绍

diff 是一个在 Unix 和类 Unix 系统中常用的命令行工具,用于比较两个文件的内容差异

1.15.2 使用方法

diff [选项] 文件1 文件2

1.15.3 参数详解

-u 或 --unified:输出统一的格式,这是一种易于阅读的格式,显示两个文件之间的差异。

-r 或 --recursive:递归地比较任何子目录中的文件。

-i 或 --ignore-case:在比较时忽略大小写差异。

-w 或 --ignore-all-space:忽略所有空格。

-b 或 --ignore-space-change:忽略空格的变化。

-B 或 --ignore-blank-lines:忽略空行。

-c 或 --context:输出上下文差异格式,这种格式提供了更详细的上下文信息。

1.15.4 常见使用案例

1.15.4.1 比较两个文件并输出统一格式的差异
diff -u file1.txt file2.txt

这将输出 file1.txt 和 file2.txt 之间的差异,以统一的格式显示

1.15.4.2 递归地比较两个目录中的文件
diff -r dir1 dir2

这将比较 dir1 和 dir2 两个目录及其子目录中的所有文件,并输出差异

1.15.4.3 忽略大小写差异比较两个文件
diff -i file1.txt file2.txt

这将忽略 file1.txt 和 file2.txt 中大小写的差异,只输出其他内容的差异

1.15.5 注意事项

diff 命令的输出通常是为了人类阅读而设计的,因此它不会告诉你怎么去修复差异,而是告诉你哪些行是新增的、哪些行被删除了、哪些行被改变了。

如果你需要自动化的方式来处理差异,你可能会需要使用像 patch 这样的工具,它可以应用 diff 命令的输出来修改文件。

当比较非常大的文件时,diff 命令可能会需要一些时间来完成。  

1.16 vimdiff

1.16.1 介绍

vimdiff 是一个在 Vim 编辑器环境中比较和编辑文件差异的工具

1.16.2 使用方法

vimdiff [选项] 文件1 文件2 ...

1.16.3 参数详解

  • -O:水平分割窗口来显示差异。
  • -c:在启动 vimdiff 时执行 Vim 命令。
  • -R:反转比较,显示文件1相对于文件2的差异。
  • -O:水平分割窗口来显示差异(与 -O 相同,但更常用)。
  • -u:使用统一的差异格式。
  • -y:使用并行比较模式。

1.16.4 常见使用案例

1.16.4.1 比较两个文件并水平分割窗口显示差异
vimdiff -O file1.txt file2.txt
1.16.4.2 在比较时执行 Vim 命令(例如,设置语法高亮)
vimdiff -c 'set syntax=python' file1.py file2.py

1.16.5 在 Vimdiff 中操作

使用方向键在文件之间导航。

按 do(或 :diffget)将当前行的更改从另一个文件复制到当前文件。

按 dp(或 :diffput)将当前行的内容复制到另一个文件。

在正常模式下,按 ] 跳到下一个差异,按 [ 跳到上一个差异。

在插入模式下,按 Ctrl-] 或 Ctrl-[ 也可以导航差异。

使用 :diffsplit 命令可以在当前窗口旁边打开一个新窗口,显示与当前文件比较的另一个文件。

1.16.6 注意事项

  • vimdiff 需要 Vim 编辑器已经安装在你的系统上。
  • 由于 vimdiff 是在 Vim 环境中运行的,因此它继承了 Vim 的所有功能和快捷键。
  • 对于不熟悉 Vim 的用户来说,学习 Vim 的基本操作可能会有些陡峭,但是一旦熟悉,你会发现它是一个非常强大和灵活的工具。

1.17 rev

1.17.1 介绍

rev 是一个 Unix/Linux 命令行工具,用于逐行反转文件的内容

1.17.2 使用方法

rev [选项] [文件...]

1.17.3 参数详解

  • -r 或 --reverse-complement:对每行执行反向互补操作,这在生物学序列分析中很有用。
  • -n 或 --no-reverse:反转除了指定的行数之外的所有行。
  • -s 或 --strict-reverse:仅反转包含非空白字符的行。

1.17.4 常见使用案例

1.17.4.1 反转文件的内容
rev filename.txt

这将输出 filename.txt 文件中每行字符的反转结果

1.17.4.2 反转来自管道输入的内容
echo "Hello World" | rev

这将输出 "World Hello",即输入字符串中字符的反转

1.17.4.3 反转文件中除了第一行之外的所有行
rev -n 1 filename.txt

这将反转 filename.txt 文件中除了第一行以外的所有行的字符顺序

1.17.5 注意事项

rev 命令仅反转每行内的字符顺序,不会改变行的顺序。

如果输入文件包含多字节字符(如 UTF-8 编码的字符),rev 命令可能会产生不正确的结果,因为它按字节而不是按字符反转内容。

rev 命令通常用于简单的文本处理任务,对于复杂的文本转换或处理,可能需要使用更强大的文本处理工具,如 awk、sed 或 perl。

1.18 grep

1.18.1 介绍

grep 是一个强大的文本搜索工具,它使用正则表达式来搜索文本,并打印出匹配的行

1.18.2 使用方法

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

1.18.3 参数详解

-i:忽略大小写。

-v:反转匹配,只显示不匹配模式的行。

-r 或 -R:递归搜索子目录中的文件。

-l:只输出包含匹配内容的文件名。

-L:输出不包含匹配内容的文件名。

-n:显示匹配行及其行号。

-c:只输出匹配行的数量。

-o:只输出匹配的部分,而不是整行。

-e:指定多个模式。

-f:从文件中读取模式。

-A:显示匹配行后的几行。

-B:显示匹配行前的几行。

-C 或 --context:显示匹配行及其前后几行。

1.18.4 常见使用案例

1.18.4.1 在文件中搜索特定文本
grep "text" filename.txt
1.18.4.2 忽略大小写搜索
grep -i "text" filename.txt
1.18.4.3 显示匹配行的行号
grep -n "text" filename.txt
1.18.4.4 递归搜索目录中的文件
grep -r "text" directory/
1.18.4.5 只输出包含匹配内容的文件名
grep -l "text" *.txt

1.18.5 注意事项

  • grep 使用正则表达式作为搜索模式,因此你可以使用复杂的模式来匹配文本。
  • grep 的速度非常快,特别是在处理大文件时,因为它使用了一种叫做 Aho-Corasick 算法的高效字符串匹配算法。
  • grep 可以与其他命令结合使用,通过管道将输出传递给 grep 进行过滤。

1.19 join

1.19.1 介绍

join 是 Unix/Linux 命令行中的一个工具,用于将两个或多个文件的行按照某个共同字段连接起来

1.19.2 使用方法

join [选项] 文件1 文件2

1.19.3 参数详解

-1:指定文件1中的连接字段。

-2:指定文件2中的连接字段。

-a:执行外连接。如果指定 -a 1,则包含文件1中所有未匹配的行;如果指定 -a 2,则包含文件2中所有未匹配的行。

-o:指定输出格式。

-t:指定字段分隔符。

-v:执行反连接,只显示不匹配的行。

-e:指定空字段的默认值。

1.19.4 常见使用案例

1.19.4.1 内连接两个文件,基于第一个字段
join file1.txt file2.txt

假设 file1.txt 和 file2.txt 都是已排序的,并且有一个共同的第一个字段

1.19.4.2 执行左连接,包含文件1中所有未匹配的行
join -a 1 file1.txt file2.txt
1.19.4.3 指定字段分隔符为逗号,并执行外连接
join -t, -a 1 -a 2 file1.csv file2.csv

假设 file1.csv 和 file2.csv 是以逗号分隔的 CSV 文件

1.19.5 注意事项

join 命令要求输入文件已经按照连接字段进行了排序。

连接字段在默认情况下是第一个字段,但可以通过 -1 和 -2 选项进行指定。

join 命令仅适用于两个文件之间的连接。如果你需要连接多个文件,可能需要使用其他工具,如 awk。

如果两个文件中有重复的行,join 命令会生成重复的输出行。  

1.20 tr

1.20.1 介绍

tr 是 Unix/Linux 命令行中的一个工具,用于转换或删除文本文件中的字符

1.20.2 使用方法

tr [选项] SET1 [SET2]

1.20.3 参数详解

  • -c:补集操作,匹配 SET1 之外的字符。
  • -d:删除 SET1 中的字符。
  • -s:压缩 SET1 中重复的字符为单个字符。

1.20.4 常见使用案例

1.20.4.1 将文本中的所有小写字母转换为大写字母
echo "hello world" | tr '[:lower:]' '[:upper:]'

输出:

HELLO WORLD
1.20.4.2 删除文本中的所有数字
echo "hello123world456" | tr -d '0-9'

输出:

helloworld
1.20.4.3 压缩文本中连续的空格为一个空格
echo "This   is   a   test" | tr -s ' '

输出:

This is a test

1.20.5 注意事项

tr 命令通过字符集进行操作,SET1 和 SET2 的字符数量必须相同,或者 SET2 可以为空。

如果 SET2 为空,SET1 中的字符将被删除。

如果 SET2 的字符数量少于 SET1,则 SET1 中的多余字符将被转换为 SET2 中的最后一个字符。

字符集可以使用方括号 [ ] 来表示,例如 [:alpha:] 表示所有字母,[:digit:] 表示所有数字。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1天前
|
Linux Go 数据安全/隐私保护
Linux 中的文件属性解析
在 Linux 系统中,每个文件和目录有一组属性控制其操作和访问权限。了解这些属性对有效管理文件至关重要。文件属性包括:文件类型(如 `-` 表示普通文件,`d` 表示目录),权限(如 `rwx` 表示所有者权限,`r-x` 表示组和其他用户权限),所有者,组,硬链接数,文件大小和最后修改时间。通过 `chown` 和 `chmod` 命令可更改文件所有者、所属组及权限。此外,还有特殊权限(如 SUID、SGID)和 ACL(访问控制列表)提供更精细的访问控制。
|
2天前
|
人工智能 Linux
Linux查找大文件的方法
Linux查找大文件的方法
|
4天前
|
Linux
【Linux】常用命令
【Linux】常用命令
24 0
|
4天前
|
固态存储 Ubuntu Linux
Linux(29) 多线程快速解压缩|删除|监视大型文件
Linux(29) 多线程快速解压缩|删除|监视大型文件
11 1
|
4天前
|
Ubuntu Linux 数据安全/隐私保护
Linux(24) 如何在Ubuntu中操作rootfs.img文件
Linux(24) 如何在Ubuntu中操作rootfs.img文件
9 0
|
5天前
|
Linux 数据安全/隐私保护
Linux常用命令实例带注释
Linux常用命令实例带注释
30 0
|
6天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
18 0
|
9天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
19 0
|
11天前
|
Linux Shell 开发工具
Linux文件常用操作
Linux文件常用操作(几乎覆盖所有日常使用)
84 0
|
11天前
|
运维 网络协议 Unix
18.系统知识-Linux常用命令
18.系统知识-Linux常用命令