当前位置:   article > 正文

Linux 常用命令汇总(三):查看文件 & 内容处理_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

这将创建一个名为 smallfileaasmallfileabsmallfileac 等的序列文件,每个文件大约 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

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

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 文件内容的逆序排序版本

1.10.4.4 指定字段分隔符和排序的字段
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 命令通常用于简单的文本处理任务,对于复杂的文本转换或处理,可能需要使用更强大的文本处理工具,如 awksed 或 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:] 表示所有数字。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/893189
推荐阅读
相关标签
  

闽ICP备14008679号