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:] 表示所有数字。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode 远程开发golang

1.安装配置golang 下载解压 wget golangurl tar -xzvf golang 解压到/usr/local环境配置 在~/.bashrc文件最后加入下面三行 export GOROOT/usr/local/go # 这里就是go的源码目录 export PATH$PATH:$GOROOT/bin export GOPATH$HOME/goProject # 这里是home目录下的你自己建…

HEUFT电源维修x-ray发生器维修HBE211226

HEUFT电源维修x-ray发生器维修HBE211253;海富HEUFT在线液位检测X射线发生器维修,不限型型号系列。 德国海富推出HEUFT在线液位检测装置,满瓶检测系统HEUFT有着强大的功能,它的模块机构能整合很多程序,并依据不同的产品及其包装特性,照相技术,高频技术或X-ray技术。…

LInux-多线程基础概念

文章目录 前言预备页表详解缺页中断页表的映射 一、多线程是什么?轻量级进程 二、Pthread库pthread_create 前言 从本章的多线程开始,我们开始进入Linux系统的尾声,所以,在学习多线程的过程中,我们也会逐步对之前的内…

邮件营销新手必读指南?怎样做好邮件营销?

邮件营销的全流程及步骤?做好邮件营销有哪些注意点? 邮件营销作为一种传统却依然高效的推广手段,被众多企业所青睐。对于新手来说,如何开展邮件营销,却是一个值得探讨的话题。AokSend将为你提供一份邮件营销新手必读指…

国家妇女节放假是法定的假日

在这个充满活力和希望的春天,我们迎来了一个特殊的节日——国家妇女节。这是一个属于所有女性的节日,是一个庆祝女性成就、关爱女性权益的时刻。在这个特殊的日子里,我们不禁要问:国家妇女节放假是法定假日吗?让我们一…

Ps:辅助类工具组

工具箱里的辅助类工具为图像编辑和设计提供了重要的支持,能帮助用户更准确地测量、选取颜色或添加注释等。 快捷键:I 吸管工具 Eyedropper Tool 用于从图像中采样颜色。 用户可以通过点击屏幕上的任何点来选取那里的颜色,该颜色随即成为当前的…

Java+SpringBoot+Vue+MySQL实战:打造智能餐厅点餐系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

FreeRTOS学习笔记-基于stm32(2)任务的创建与删除,挂起与恢复

一、任务创建与删除 1、动态任务创建 xTaskCreate( TaskFunction_t pxTaskCode,const char * const pcName,const uint16_t usStackDepth,void * const pvParameters,UBaseType_t uxPriority,TaskHandle_t * const pxCreatedTask ); ①:使用此函数前需将宏 confi…

消息队列以及Kafka的使用

什么是消息队列 消息队列:一般我们会简称它为MQ(Message Queue)。其主要目的是通讯。 ps:消息队列是以日志的形式将数据顺序存储到磁盘当中。通常我们说从内存中IO读写数据的速度要快于从硬盘中IO读写的速度是对于随机的写入和读取。但是对于这种顺序存…

SQL 中 IN 与 <= 且 >= 的效率比较

1. 索引利用 当查询条件中的值是离散的、非连续的&#xff0c;或者是在多个不相邻的范围内时&#xff0c;使用 IN 可以更高效&#xff0c;因为 IN 可以直接跳到索引中的这些特定值。而 < 且 > 通常用于连续范围的查询&#xff0c;如果查询的是一个连续的区间&#xff0c…

2024年:AI领航研发新纪元

导言&#xff1a; 在21世纪的科技巨浪中&#xff0c;人工智能&#xff08;AI&#xff09;已经崭露头角&#xff0c;成为研发领域的核心变革者。其强大的潜力和无所不在的应用正在改变人类解决问题的方式&#xff0c;为未来的发展开启了无限可能。随着机器学习、自然语言处理、计…

模型精度fp16和fp32

FP16和FP32是两种不同的浮点数精度格式&#xff0c;在计算机科学特别是深度学习领域中广泛应用。 FP32&#xff08;单精度浮点数&#xff09;&#xff1a; FP32代表32位&#xff08;4字节&#xff09;单精度浮点数格式&#xff0c;这是传统上大多数深度学习模型训练和推理的标准…

代码随想录算法训练营第五十四天|392.判断子序列、115.不同的子序列

392.判断子序列 思路&#xff1a;判断子序列的问题&#xff0c;其实与最大公共子序列的问题是一样的&#xff0c;所以基本上写出来是一样的&#xff0c;但是今天又犯了一个错误&#xff0c;对于非连续子序列&#xff0c;不仅要在相等的时候进行更新&#xff0c;而且不等的时候也…

周立功USBCAN-E-mini分析仪的安装测试笔记

一、介绍 USBCAN-E-mini 智能 CAN 接口卡是系列 USBCAN 便携版本&#xff0c;与 USBCAN—E-U 单路智能 CAN 接口卡完全兼容。USBCAN-E-mini 智能 CAN 接口卡与 USB1.1 总线兼容的&#xff0c;集成 1 路 CAN 接口的智能型 CAN-bus 总线通讯接口卡。采用 USBCAN-E-mini 智能 CAN …

【Linux】Linux操作命令—最全版

目录 一、Linux下基本指令 01. ls 指令 02.cd 指令 03.touch指令 04 mkdir指令 05 man指令 06 cp指令 07 mv指令 08 cat指令 09 more指令 10 less指令 11 head 命令 12 tail 命令 二、时间相关的指令 01 date显示 1.在显示方面&#xff0c;使用者可以设定…

6、string字符串拼接

#include <iostream> using namespace std;void test01 () {string s1 "我";s1 "爱玩游戏";cout << s1 << endl;s1 :;string s2 "lol dnf";s1 s2;cout << s1 << endl;string s3 "i";s3.append(&q…

Vue 使用@别名

1. 安装 types/node types/node 包允许您在TypeScript项目中使用Node.js的核心模块和API&#xff0c;并提供了对它们的类型检查和智能提示的支持。 npm install types/node --save-dev 比如安装之后&#xff0c;就可以导入nodejs的 path模块&#xff0c;在下面代码 import pat…

【ICCV】AIGC时代下的SOTA人脸表征提取器TransFace,FaceChain团队出品

一、论文 本文介绍被计算机视觉顶级国际会议ICCV 2023接收的论文 "TransFace: Calibrating Transformer Training for Face Recognition from a Data-Centric Perspective" 论文链接&#xff1a;https://arxiv.org/abs/2308.10133 开源代码&#xff1a;https://an…

GAMMA电源维修高压直流电源ES30P-5W ES系列

美国Gamma高压电源维修型号&#xff1a;D-ES30R-10N-5W/M&#xff0c;LXR30-1N&#xff0c;XRM5N-100W&#xff0c;ES50P-10W/DDPM&#xff0c;ES60P-10W/DDPM&#xff0c;RR20-20P/DDPM&#xff0c;ES30P-10W&#xff0c;ES60P-10W DDPM&#xff0c;RR60-18P/220V&#xff0c;…

快看!提高效率,还得看工作流表单引擎

经常有客户会问我们&#xff1a;究竟用什么样的工具才能打破信息孤岛&#xff0c;让大家互联联络起来&#xff1f;其实&#xff0c;说到这&#xff0c;有不少人会联想到低代码技术平台。不错&#xff0c;在快节奏的发展社会中&#xff0c;高效率的办公目的已经是大家的追求和发…