Linux 常用命令汇总(三):查看文件 & 内容处理
CSDN 2024-07-29 13:37:01 阅读 79
一、查看文件及内容处理命令
1.1 cat
1.1.1 介绍
<code>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
文件内容的逆序排序版本
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
命令通常用于简单的文本处理任务,对于复杂的文本转换或处理,可能需要使用更强大的文本处理工具,如 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:]
表示所有数字。
上一篇: 【Linux】使用 iptables 验证访问HDFS 所使用到的端口
下一篇: 杂记 | 在Linux上使用Docker-compose安装单机版Milvus向量数据库并配置访问控制和可视化面板(Attu)
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。