赞
踩
cat
是 Linux 和其他 Unix-like 系统中一个非常基础且常用的命令,用于显示、合并或复制文本文件的内容
cat [选项] [文件...]
[选项]
:控制 cat
命令的行为。[文件...]
:要显示内容的文件列表。-n
:显示行号。-b
:显示非空行的行号。-s
:将连续的空行压缩为单个空行。-E
:显示行尾的 $
符号。-T
:显示制表符为 ^I
。-v
:显示不可打印的字符。cat myfile.txt
这将输出 myfile.txt
的全部内容到标准输出(通常是终端)
cat -n myfile.txt
这将输出 myfile.txt
的内容,并在每行前面加上行号
cat file1.txt file2.txt
这将连续显示 file1.txt
和 file2.txt
的内容
cat -s myfile.txt
这将输出 myfile.txt
的内容,但连续的空行将只显示一个
cat
命令主要用于查看小文件的内容。对于非常大的文件,使用 cat
可能会导致终端滚动得非常快,不易于阅读。在这种情况下,使用 more
或 less
命令来分页查看文件内容可能更为合适。cat
命令也常用于将多个文件的内容合并到一个文件中,通过重定向输出到一个新文件来实现。-v
选项可以显示这些不可打印的字符,这在调试某些文本文件问题时可能很有用。tac
命令与 cat
命令的功能相反,它用于反向显示文件的内容
tac [文件...]
[文件...]
:要反向显示内容的文件列表。tac
命令没有像 cat
那样的众多选项,因为它专注于执行一个简单的任务:反向显示文件内容
tac myfile.txt
这将输出 myfile.txt
的全部内容,但顺序是反向的,即最后一行首先显示,第一行最后显示
tac
命令在处理非常大的文件时可能会很慢,因为它需要读取整个文件并反向输出内容。cat
命令类似,tac
主要用于文本文件。如果尝试对非文本文件使用 tac
,可能会得到不可预测的输出。tac
是反向显示文件内容,它在某些特定的文本处理或调试场景中可能会很有用,例如从文件末尾开始查看日志文件。more
是一个在 Linux 和其他 Unix-like 系统中常用的命令,用于分页显示文件内容
more [文件...]
[文件...]
:要分页显示内容的文件列表
more myfile.txt
这将允许用户逐页查看 myfile.txt
的内容。使用空格键或 Enter 键来浏览文件
more myfile.txt
在 more
的交互模式下,输入 /
并跟上你要搜索的字符串,例如 /searchstring
,然后按 Enter 键。more
会高亮显示第一个匹配项,并允许你使用 n
和 N
键来导航到下一个或上一个匹配项。
more
命令对于查看大文件或长输出特别有用,因为它允许用户在不滚动整个终端窗口的情况下查看文件内容。cat
命令不同,more
提供了交互式的浏览体验,用户可以按需查看文件的不同部分。more
可能不是最高效的工具,因为它需要逐页加载内容。在这种情况下,less
命令可能是一个更好的选择,因为它提供了更强大的导航和搜索功能。less
是一个在 Linux 和其他 Unix-like 系统中广泛使用的命令,用于查看文件内容,并提供了比 more
更加强大和灵活的导航和搜索功能
less [文件...]
less
查看文件内容less myfile.txt
这将打开 less
查看器,并显示 myfile.txt
的内容。你可以使用上述的键盘快捷键来导航和搜索文件内容
less
中搜索字符串在 less
查看器中,输入 /
并跟上你要搜索的字符串,然后按 Enter 键。less
会高亮显示第一个匹配项,并允许你使用 n
和 N
键来导航到下一个或上一个匹配项。
less
命令是 more
命令的增强版,提供了更多的功能和灵活性。如果你经常需要查看和搜索长文件,less
会是一个更好的选择。less
允许用户向前和向后翻页,这在某些情况下比 more
更方便。less
支持在终端中复制和粘贴文本,这对于处理文本文件非常有用。less
的帮助屏幕提供了所有可用命令的概览,这对于新用户来说非常有用。head
是一个在 Linux 和其他 Unix-like 系统中常用的命令,用于显示文件的开头部分
head [选项] [文件...]
-n [行数]
:显示文件开头指定行数的内容。如果不指定行数,则默认显示前 10 行。-c [字节数]
:显示文件开头指定字节数的内容。-v
:显示文件名作为输出的前缀。-q
:静默模式,不显示文件名。head myfile.txt
这将输出 myfile.txt
的前 10 行内容
head -n 5 myfile.txt
这将输出 myfile.txt
的前 5 行内容
head -c 20 myfile.txt
这将输出 myfile.txt
文件开头的前 20 字节内容
head
命令非常适合于快速查看文件的开头部分,尤其是当文件非常大时。head
的输出通常用于快速检查日志文件、配置文件或其他文本文件的开头部分。head
会比使用 cat
或 less
更高效,因为它不需要读取整个文件。tail
是 Linux 和其他 Unix-like 系统中常用的命令,用于显示文件的末尾部分
tail [选项] [文件...]
-n [行数]
:显示文件末尾指定行数的内容。如果不指定行数,则默认显示最后 10 行。-c [字节数]
:显示文件末尾指定字节数的内容。-f
:实时追踪文件变化,并显示新添加的内容。常用于查看日志文件。-q
:静默模式,不显示文件名。-v
:显示文件名作为输出的前缀。tail myfile.txt
这将输出 myfile.txt
的最后 10 行内容
tail -n 20 myfile.txt
这将输出 myfile.txt
的最后 20 行内容
tail -f /var/log/syslog
这将开始显示 /var/log/syslog
文件的最后 10 行,并在文件有新内容添加时实时更新显示
tail
命令特别适用于查看日志文件的最新条目,因为它允许你快速查看文件末尾的内容。-f
选项时,tail
会保持打开状态,并在文件变化时实时更新显示。这对于监控日志文件特别有用。head
命令类似,tail
也非常高效,因为它不需要读取整个文件,而只是文件的末尾部分。cut
是一个在 Linux 和其他 Unix-like 系统中用于从文件或标准输入中提取列的命令行工具
cut [选项] [文件]
-b
:按字节位置提取列。-c
:按字符位置提取列。-d
:指定字段分隔符,默认为制表符。-f
:指定要提取的字段。-n
:与 -b
或 -c
一起使用,不分割多字节字符。cut -d ',' -f 1 filename.csv
这将从名为 filename.csv
的 CSV 文件中提取第一列的内容,假设字段是由逗号分隔的
cut -d ',' -f 2,3 filename.csv
这将提取第二列和第三列的内容
cut -b 1-4 filename.txt
这将从名为 filename.txt
的文本文件中提取每行的第一到第四个字节
cut
命令对于处理由固定分隔符(如逗号、制表符等)分隔的文本文件非常有用。-n
选项可以防止 cut
命令错误地分割这些字符。cut
命令主要用于处理简单的文本文件,对于复杂的文本处理任务,可能需要使用更强大的文本处理工具,如 awk
。split
是一个在 Linux 和其他 Unix-like 系统中用于将大文件分割成较小的文件的命令行工具
split [选项] [原始文件] [输出前缀]
-b
:指定每个输出文件的大小(以字节为单位)。-C
:与 -b
类似,但尽量保持每行的完整性。-l
:指定每个输出文件的行数。-a
:指定输出文件名的后缀长度。-d
:使用数字后缀代替默认的字母后缀。split -b 1M largefile.log smallfile
这将创建一个名为 smallfileaa
,smallfileab
,smallfileac
等的序列文件,每个文件大约 1MB 大小(最后一个文件可能小于 1MB)
split -l 1000 largefile.log smallfile
这将创建一个序列文件,每个文件包含 1000 行(最后一个文件可能行数少于 1000)
split -b 1M -d largefile.log smallfile
这将创建名为 smallfile00
,smallfile01
,smallfile02
等的序列文件,使用数字作为后缀
split
命令对于处理大型文件非常有用,可以将它们分割成更易于管理和处理的较小文件。split
命令使用字母作为输出文件名的后缀,但你可以使用 -d
选项来改为使用数字。cat
命令或其他文本处理工具重新合并。paste
是一个在 Linux 和其他 Unix-like 系统中用于并排合并文件的命令行工具
paste [选项] [文件...]
-d
:指定分隔符,用于分隔不同的文件列。-s
:序列模式,将每个文件的内容作为一个单独的序列处理。paste file1.txt file2.txt
这将输出两个文件的内容,每行的对应列之间用制表符分隔
paste -d, file1.txt file2.txt
这将使用逗号作为分隔符来合并文件内容
paste -s file1.txt file2.txt
在序列模式下,paste
会将每个文件的内容作为一个单独的块处理,而不是逐行合并
paste
命令主要用于将两个或多个文件的内容按列合并,这在数据比较、分析等场景下非常有用。paste
使用制表符作为分隔符,但你可以使用 -d
选项指定其他分隔符。paste
会根据最短的文件长度来输出合并后的结果。sort
是 Linux 和其他 Unix-like 系统中用于对文本行进行排序的命令行工具
sort [选项] [文件]
-n
:按照数值大小排序,而不是按照字符编码排序。-r
:逆序排序,即从大到小或从 Z 到 A。-k
:指定按照哪一列进行排序。-t
:指定字段分隔符,与 -k
一起使用来指定排序的字段。-u
:去重,只输出唯一的行。-o
:将排序后的结果输出到指定的文件,而不是标准输出。sort filename.txt
这将输出 filename.txt
文件内容的排序版本
sort -n numbers.txt
这将按照数值大小对 numbers.txt
文件中的行进行排序
sort -r filename.txt
这将输出 filename.txt
文件内容的逆序排序版本
sort -t: -k2 filename.txt
假设 filename.txt
是由冒号分隔的字段组成的文件,该命令将按照第二个字段进行排序
sort -u filename.txt -o sorted_unique.txt
这将去除 filename.txt
文件中的重复行,并将排序后的唯一行输出到 sorted_unique.txt
文件中
sort
命令默认按照字符编码进行排序,这对于文本文件通常是足够的。-t
和 -k
选项来指定按照哪一列进行排序。sort
命令可能需要一些时间来执行排序操作。uniq
是一个在 Linux 和其他 Unix-like 系统中用于从文本文件中去除重复行的命令行工具
uniq [选项] [文件]
-c
:在每行旁边显示该行在文件中出现的次数。-d
:仅显示重复的行。-u
:仅显示不重复的行。-i
:在比较行时忽略大小写。-s
:跳过前 N 个字符后再进行比较。-w
:仅比较每行的前 N 个字符。sort filename.txt | uniq
首先使用 sort
命令对 filename.txt
文件进行排序,然后通过管道将排序后的输出传递给 uniq
,从而去除连续重复的行
sort filename.txt | uniq -c
这将在每行旁边显示该行在文件中出现的次数
sort filename.txt | uniq -d
这只会输出那些在文件中至少出现两次的行
sort filename.txt | uniq -u -i
这将输出文件中所有不重复的行,并且在比较时忽略大小写
sort filename.txt | uniq -s 3
这将跳过每行的前三个字符,然后基于剩余的字符来比较和去除重复行
uniq
命令只能去除连续重复的行,因此通常与 sort
命令结合使用。-c
、-d
或 -u
选项可以进一步控制输出的内容。uniq
命令对于处理大型文本文件并去除其中的重复行非常有用。wc
是 Linux 和其他 Unix-like 系统中用于计算文件中字节数、字数和行数的命令行工具
wc [选项] [文件...]
-b
:只计算字节数。-c
:计算字节数,与 -b
相同。-l
:只计算行数。-w
:只计算字数。-m
:只计算字符数。--bytes
、--chars
、--lines
、--words
:分别用于计算字节、字符、行数和字数,这些选项是更明确的替代 -b
、-m
、-l
和 -w
。wc filename.txt
这将输出三个值:字节数、字数和行数
wc -l filename.txt
或者
wc --lines filename.txt
wc -w filename.txt
或者
wc --words filename.txt
这将只输出 filename.txt
文件中的字数
wc file1.txt file2.txt
这将分别输出 file1.txt
和 file2.txt
的统计信息
wc
命令默认会同时输出字节数、字数和行数。wc
命令可能会需要一些时间来计算统计信息。iconv
是一个用于字符集转换的命令行工具
iconv [选项] [源文件 [目标文件]]
-f
或 --from-code
:指定源字符集。-t
或 --to-code
:指定目标字符集。-o
或 --output
:指定输出文件。如果未指定,iconv
会将转换后的内容输出到标准输出。-l
或 --list
:列出所有支持的字符集。-s
或 --silent
:不显示警告信息。-c
:忽略无法转换的字符。iconv -f UTF-8 -t ISO-8859-1 input.txt -o output.txt
这将把 input.txt
文件从 UTF-8 字符集转换为 ISO-8859-1 字符集,并将结果输出到 output.txt
文件中
iconv -l
这将列出 iconv
支持的所有字符集
echo "Some text" | iconv -f ISO-8859-1 -t UTF-8
这将把从标准输入读取的文本从 ISO-8859-1 转换为 UTF-8,并将结果输出到标准输出
iconv
的支持取决于系统上的库和安装情况,不是所有字符集都在所有系统上可用。dos2unix
是一个用于将 DOS/Windows 格式的文本文件转换为 Unix/Linux 格式的命令行工具
dos2unix [选项] 文件...
-n
:仅显示哪些文件是 DOS/MAC 格式,而不进行转换。-c
:仅显示转换了多少个文件。-v
:显示详细的转换信息。-o
:将转换后的内容输出到标准输出,而不修改原始文件。-s
:静默模式,不显示任何消息。dos2unix filename.txt
这将把 filename.txt
文件从 DOS/Windows 格式转换为 Unix/Linux 格式
dos2unix -n file1.txt file2.txt
这将检查 file1.txt
和 file2.txt
是否是 DOS/MAC 格式,并显示结果,但不进行实际转换
dos2unix -o filename.txt
这将把 filename.txt
文件从 DOS/Windows 格式转换为 Unix/Linux 格式,并将转换后的内容输出到标准输出,而不是修改原始文件
dos2unix
工具只能处理文本文件。对于二进制文件或其他非文本文件,使用此工具可能会导致数据损坏。-c
或 -v
选项可以帮助你跟踪转换的进度。diff
是一个在 Unix 和类 Unix 系统中常用的命令行工具,用于比较两个文件的内容差异
diff [选项] 文件1 文件2
-u
或 --unified
:输出统一的格式,这是一种易于阅读的格式,显示两个文件之间的差异。-r
或 --recursive
:递归地比较任何子目录中的文件。-i
或 --ignore-case
:在比较时忽略大小写差异。-w
或 --ignore-all-space
:忽略所有空格。-b
或 --ignore-space-change
:忽略空格的变化。-B
或 --ignore-blank-lines
:忽略空行。-c
或 --context
:输出上下文差异格式,这种格式提供了更详细的上下文信息。diff -u file1.txt file2.txt
这将输出 file1.txt
和 file2.txt
之间的差异,以统一的格式显示
diff -r dir1 dir2
这将比较 dir1
和 dir2
两个目录及其子目录中的所有文件,并输出差异
diff -i file1.txt file2.txt
这将忽略 file1.txt
和 file2.txt
中大小写的差异,只输出其他内容的差异
diff
命令的输出通常是为了人类阅读而设计的,因此它不会告诉你怎么去修复差异,而是告诉你哪些行是新增的、哪些行被删除了、哪些行被改变了。patch
这样的工具,它可以应用 diff
命令的输出来修改文件。diff
命令可能会需要一些时间来完成。 vimdiff
是一个在 Vim 编辑器环境中比较和编辑文件差异的工具
vimdiff [选项] 文件1 文件2 ...
-O
:水平分割窗口来显示差异。-c
:在启动 vimdiff
时执行 Vim 命令。-R
:反转比较,显示文件1相对于文件2的差异。-O
:水平分割窗口来显示差异(与 -O
相同,但更常用)。-u
:使用统一的差异格式。-y
:使用并行比较模式。vimdiff -O file1.txt file2.txt
vimdiff -c 'set syntax=python' file1.py file2.py
do
(或 :diffget
)将当前行的更改从另一个文件复制到当前文件。dp
(或 :diffput
)将当前行的内容复制到另一个文件。]
跳到下一个差异,按 [
跳到上一个差异。Ctrl-]
或 Ctrl-[
也可以导航差异。:diffsplit
命令可以在当前窗口旁边打开一个新窗口,显示与当前文件比较的另一个文件。vimdiff
需要 Vim 编辑器已经安装在你的系统上。vimdiff
是在 Vim 环境中运行的,因此它继承了 Vim 的所有功能和快捷键。rev
是一个 Unix/Linux 命令行工具,用于逐行反转文件的内容
rev [选项] [文件...]
-r
或 --reverse-complement
:对每行执行反向互补操作,这在生物学序列分析中很有用。-n
或 --no-reverse
:反转除了指定的行数之外的所有行。-s
或 --strict-reverse
:仅反转包含非空白字符的行。rev filename.txt
这将输出 filename.txt
文件中每行字符的反转结果
echo "Hello World" | rev
这将输出 "World Hello",即输入字符串中字符的反转
rev -n 1 filename.txt
这将反转 filename.txt
文件中除了第一行以外的所有行的字符顺序
rev
命令仅反转每行内的字符顺序,不会改变行的顺序。rev
命令可能会产生不正确的结果,因为它按字节而不是按字符反转内容。rev
命令通常用于简单的文本处理任务,对于复杂的文本转换或处理,可能需要使用更强大的文本处理工具,如 awk
、sed
或 perl
。grep
是一个强大的文本搜索工具,它使用正则表达式来搜索文本,并打印出匹配的行
grep [选项] 模式 [文件...]
-i
:忽略大小写。-v
:反转匹配,只显示不匹配模式的行。-r
或 -R
:递归搜索子目录中的文件。-l
:只输出包含匹配内容的文件名。-L
:输出不包含匹配内容的文件名。-n
:显示匹配行及其行号。-c
:只输出匹配行的数量。-o
:只输出匹配的部分,而不是整行。-e
:指定多个模式。-f
:从文件中读取模式。-A
:显示匹配行后的几行。-B
:显示匹配行前的几行。-C
或 --context
:显示匹配行及其前后几行。grep "text" filename.txt
grep -i "text" filename.txt
grep -n "text" filename.txt
grep -r "text" directory/
grep -l "text" *.txt
grep
使用正则表达式作为搜索模式,因此你可以使用复杂的模式来匹配文本。grep
的速度非常快,特别是在处理大文件时,因为它使用了一种叫做 Aho-Corasick 算法的高效字符串匹配算法。grep
可以与其他命令结合使用,通过管道将输出传递给 grep
进行过滤。join
是 Unix/Linux 命令行中的一个工具,用于将两个或多个文件的行按照某个共同字段连接起来
join [选项] 文件1 文件2
-1
:指定文件1中的连接字段。-2
:指定文件2中的连接字段。-a
:执行外连接。如果指定 -a 1
,则包含文件1中所有未匹配的行;如果指定 -a 2
,则包含文件2中所有未匹配的行。-o
:指定输出格式。-t
:指定字段分隔符。-v
:执行反连接,只显示不匹配的行。-e
:指定空字段的默认值。join file1.txt file2.txt
假设 file1.txt
和 file2.txt
都是已排序的,并且有一个共同的第一个字段
join -a 1 file1.txt file2.txt
join -t, -a 1 -a 2 file1.csv file2.csv
假设 file1.csv
和 file2.csv
是以逗号分隔的 CSV 文件
join
命令要求输入文件已经按照连接字段进行了排序。-1
和 -2
选项进行指定。join
命令仅适用于两个文件之间的连接。如果你需要连接多个文件,可能需要使用其他工具,如 awk
。join
命令会生成重复的输出行。 tr
是 Unix/Linux 命令行中的一个工具,用于转换或删除文本文件中的字符
tr [选项] SET1 [SET2]
-c
:补集操作,匹配 SET1 之外的字符。-d
:删除 SET1 中的字符。-s
:压缩 SET1 中重复的字符为单个字符。echo "hello world" | tr '[:lower:]' '[:upper:]'
输出:
HELLO WORLD
echo "hello123world456" | tr -d '0-9'
输出:
helloworld
echo "This is a test" | tr -s ' '
输出:
This is a test
tr
命令通过字符集进行操作,SET1 和 SET2 的字符数量必须相同,或者 SET2 可以为空。[ ]
来表示,例如 [:alpha:]
表示所有字母,[:digit:]
表示所有数字。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。