一些常见的Linux文本编辑和处理相关的指令,以及它们的参数和使用例子,以表格形式列出:
序号 | 指令名称 | 指令参数及说明 | 指令使用例子及说明 |
---|---|---|---|
1 | cat | -n: 显示每行的行号 | cat -n filename 显示文件内容及行号 |
2 | less | -i: 交互模式,允许搜索 | less -i filename 交互式查看文件 |
3 | more | more filename 分页查看文件 | |
4 | head | -n : 显示前num行 | head -n 10 filename 查看文件前10行 |
5 | tail | -n : 显示后num行 | tail -n 10 filename 查看文件后10行 |
6 | grep | -r: 递归搜索目录;-i: 忽略大小写 | grep -r "text" /path 递归搜索字符串 |
7 | sed | -e: 执行后续的表达式;-n: 仅打印sed命令的模式空间结果 | sed -e '5s/old/new/' -n filename 替换第5行中的old为new |
8 | awk | -F: 指定字段分隔符;{print}: 打印指定字段 | awk -F: '{print $1}' filename 打印每行的第一个字段 |
cat 指令
cat
是一个常用的 Linux 命令行工具,用于查看、创建和拼接文件。以下是 cat
指令的参数说明、使用例子以及一些拓展用法:
参数 | 说明 |
---|---|
-A | 显示所有非打印字符,与 -v 相似,但不会将行结束符显示为 $ |
-b | 显示行号,空白行也计数 |
-e | 显示行号,仅对非空白行 |
-n | 显示所有行的行号 |
-s 或 --squeeze-blank | 压缩连续的空白行到一行 |
-t | 显示制表符(\t ) |
-T | 不显示制表符(\t ),与 -t 相反 |
-u | 与 -t 相似,但不输出用户定义的行结束符 |
-E | 显示行结束符($ ) |
使用例子
-
查看整个文件的内容:
cat filename.txt
-
查看文件的前5行:
cat filename.txt | head -n 5
-
显示文件内容,并显示行号:
cat -n filename.txt
-
将多个文件的内容拼接到一个文件中:
cat file1.txt file2.txt > combined.txt
-
显示非打印字符:
cat -A filename.txt
-
压缩连续空白行:
cat -s filename.txt > compressed.txt
拓展 cat
指令
-
快速查看日志文件:使用
cat
结合管道和less
或more
来逐步查看大型日志文件。cat -nlogfile.log | less
-
创建新文件:使用
cat
创建一个新文件并输入内容。cat > newfile.txt
然后在提示符后输入内容,按
CTRL+D
结束输入。 -
复制文件内容:使用
cat
来复制一个文件的内容到另一个文件。cat sourcefile.txt > targetfile.txt
-
比较两个文件:使用
cat
配合diff
来比较两个文件的差异。cat file1.txt | diff - file2.txt
-
在文件末尾追加内容:使用
cat
将输出追加到文件末尾。cat >> appendfile.txt << EOF New line to be appended. EOF
cat
是一个非常基础且功能强大的工具,可以用于各种文本文件的处理和查看任务。掌握 cat
的使用可以大大提高命令行操作的效率。
less 指令
less
是一个流行的类 Unix 系统中的命令行工具,用于分页查看文件内容,特别是对于大型文件非常有用。以下是 less
指令的参数说明、使用例子以及一些拓展用法:
less命令摘要
标记有 * 的命令前可以跟上一个数字,N。
括号中的注释表示如果给出 N 时的行为。
一个由插入符号(^)引导的键表示 Ctrl 键;因此 ^K 是 Ctrl-K。
h
H
显示本帮助。q
:q
Q
:Q
ZZ
退出。
移动
e
^E
j
^N
CR
* 向前一行(或 N 行)。y
^Y
k
^K
^P
* 向后一行(或 N 行)。f
^F
^V
SPACE
* 向前一窗口(或 N 行)。b
^B
ESC-v
* 向后一窗口(或 N 行)。z
* 向前一窗口(并将窗口设置为 N)。w
* 向后一窗口(并将窗口设置为 N)。ESC-SPACE
* 向前一窗口,但不要停在文件末尾。d
^D
* 向前一半窗口(并将半窗口设置为 N)。u
^U
* 向后一半窗口(并将半窗口设置为 N)。ESC-)
RightArrow
* 向右一半个屏幕宽度(或 N 个位置)。ESC-(
LeftArrow
* 向左一半个屏幕宽度(或 N 个位置)。ESC-}
^RightArrow
移动到显示的最后列。ESC-{
^LeftArrow
移动到显示的第一列。F
永远向前;类似于 “tail -f”。ESC-F
类似于 F,但在找到搜索模式时停止。r
^R
^L
重绘屏幕。R
重绘屏幕,丢弃缓冲输入。
搜索
/pattern
* 向前搜索匹配的行(或第 N 次匹配)。?pattern
* 向后搜索匹配的行(或第 N 次匹配)。n
* 重复上一次搜索(第 N 次出现)。N
* 以相反方向重复上一次搜索。ESC-n
* 跨文件重复上一次搜索。ESC-N
* 以相反方向跨文件重复上一次搜索。ESC-u
撤销(切换)搜索高亮。ESC-U
清除搜索高亮。&pattern
* 仅显示匹配的行。
跳跃
g
<
ESC-<
* 转到文件的第一行(或第 N 行)。G
>
ESC->
* 转到文件的最后一行(或第 N 行)。p
%
* 转到文件的开始(或文件的 N%)。t
* 转到下一个标签(第 N 个)。T
* 转到上一个标签(第 N 个)。{
(
[
* 查找闭合括号}
)
]
。}
)
]
* 查找开放括号{
(
[
。
标记
m<letter>
用<letter>
标记当前顶部行。M<letter>
用<letter>
标记当前底部行。'<letter>
转到之前标记的位置。''
转到之前的位置。^X^X
与 ‘.’ 相同。ESC-M<letter>
清除标记。
文件更改
:e [file]
查看新文件。^X^V
与:e
相同。:n
* 查看命令行中下一个文件(第 N 个)。:p
* 查看命令行中上一个文件(第 N 个)。:x
* 查看命令行中的第一个文件(或第 N 个)。:d
从命令行列表中删除当前文件。=
^G
:f
打印当前文件名。
杂项命令
-<flag>
切换命令行选项(见下面的 OPTIONS)。--<name>
按名称切换命令行选项。_<flag>
显示命令行选项的设置。__<name>
按名称显示选项的设置。+cmd
每次查看新文件时执行 less 命令。!command
使用 $SHELL 执行 shell 命令。|Xcommand
将当前位置和标记 X 之间的文件管道到 shell 命令。s file
将输入保存到文件。v
使用 $VISUAL 或 $EDITOR 编辑当前文件。V
打印 “less” 的版本号。
选项
- 可以在命令行上或在 less 内部使用 - 或 – 命令来更改大多数选项。
- 选项可以以两种形式给出:要么是一个由 - 引导的单个字符,要么是一个由 – 引导的名称。
行编辑
- 这些键可以在屏幕底部的 “命令行” 上编辑正在输入的文本。
参数说明
参数 | 说明 |
---|---|
-N | 显示每行的行号 |
-e | 遇到 EOF 时,退出 |
-i | 忽略搜索时的大小写 |
-m 或 -M | 显示多个文件之间的匹配行 |
-S | 横向滚动,显示长行,而不是折行 |
-X | 关闭标签宽度限制,与 -S 选项一起使用 |
-R | 允许显示 ANSI 颜色 |
-F | 查看文件时,如果是新文件或者文件被截断,则自动退出 |
-X | 禁止使用标签(用于文件名过长时) |
-# | 指定提示符字符串,如 -#p 显示当前百分比 |
使用例子
-
查看文件内容:
less filename.txt
-
查看文件内容并显示行号:
less -N filename.txt
-
忽略大小写搜索:
less -i filename.txt
-
横向滚动查看长行:
less -S filename.txt
-
查看文件时,如果文件内容有更改,则退出:
less -F filename.txt
拓展 less
指令
-
在
less
中搜索:使用/
后跟搜索词,例如/word
向下搜索 “word”。 -
反向搜索:使用
?
后跟搜索词,例如?word
向上搜索 “word”。 -
使用
less
查看日志文件:less
非常适合查看和分析日志文件,因为它允许你逐步浏览内容。less -F /var/log/syslog
-
使用
less
查看多个文件:less
可以将多个文件内容合并查看。less file1.txt file2.txt
-
使用
less
的标签功能:less
允许你给文件中的特定行添加标签。less -#p "error" /var/log/syslog
这将在
syslog
中搜索包含 “error” 的行,并显示出来。 -
使用
less
的行操作:less
提供了多种行操作,如删除、复制、移动等。-d filename.txt 删除当前行 -x filename.txt 剪切当前行 -p filename.txt 粘贴行
less
是一个功能强大的分页程序,它提供了丰富的交互命令和选项,使得浏览和分析文本文件变得非常方便。
more 指令
more
是一个在 Unix 和类 Unix 系统中广泛使用的命令行工具,用于分页查看文件内容。尽管 less
命令在功能上更为强大,取代了 more
的许多使用场景,但 more
仍然是一个简单且有用的工具。以下是 more
指令的参数说明、使用例子以及一些拓展用法:
参数说明
参数 | 说明 |
---|---|
-n | 禁止在每个屏幕的末尾自动显示提示信息 |
-c | 清屏并从头开始显示文件 |
-d | 使用交互式模式,提示用户进行操作 |
-e | 到达文件末尾时退出 |
-p | 跳过文件的第一行 |
-s | 将多个空行压缩为一行显示 |
-u | 不显示下划线,即使文件中包含下划线字符 |
使用例子
-
查看整个文件的内容:
more filename.txt
-
查看文件内容,不显示提示信息:
more -n filename.txt
-
清屏并从头开始显示文件:
more -c filename.txt
-
交互式模式,提示用户操作:
more -d filename.txt
-
到达文件末尾时退出:
more -e filename.txt
-
跳过文件的第一行:
more -p filename.txt
-
压缩显示多个空行:
more -s filename.txt
拓展 more
指令
-
在
more
中搜索:使用/
后跟搜索词,例如/word
向下搜索 “word”。 -
反向搜索:使用
?
后跟搜索词,例如?word
向上搜索 “word”。 -
查看日志文件:
more
适合逐步查看日志文件,尽管它没有less
那样强大的搜索和移动功能。more /var/log/syslog
-
使用
more
查看多个文件:more
可以连续查看多个文件。more file1.txt file2.txt
在查看第一个文件后,按
:n
命令查看下一个文件。 -
使用
more
的压缩功能:more
的-s
参数可以将多个连续的空行显示为一个空行,这在查看格式化的文本文件时非常有用。more -s filename.txt
more
是一个基础的分页程序,虽然功能不如 less
那样丰富,但它的简洁性和易用性使其在某些情况下仍然是一个不错的选择。
head 指令
以下是 head
指令的参数说明,以表格形式输出,以及一些使用例子:
参数 | 说明 |
---|---|
-n [行数] | 显示每个文件开头的指定行数。 |
-q | 与 -n 选项一起使用,忽略文件名的输出。 |
-c [字节数] | 显示每个文件开头的指定字节数。 |
使用例子:
-
显示文件的前10行
head filename.txt
-
显示文件的前20行
head -n 20 filename.txt
-
显示文件的前100个字节
head -c 100 filename.txt
-
对显示的行进行排序(仅对第一行有效,因为head默认只显示前10行)
head -n 1 filename.txt | sort
-
显示多个文件的前10行,每个文件之间用行分隔
head -q -n 10 file1.txt file2.txt file3.txt
-
显示多个文件的前10行,每个文件的行不进行分隔
head -n 10 file1.txt file2.txt file3.txt
拓展 head
指令:
除了基本的 head
用法,还可以与其他命令结合使用,实现更复杂的功能:
-
显示当前目录下所有
.txt
文件的前5行head -n 5 *.txt
-
显示当前目录下每个
.txt
文件的前5行,但只显示文件中有内容的行head -n 5 -- *.txt
-
使用管道将
head
与grep
结合,搜索包含特定文本的行head -n 50 filename.txt | grep "特定文本"
-
显示某个文件的最后10行(使用
tail
的逆操作)head -n -10 filename.txt
请注意,head
命令默认情况下显示前10行,如果需要显示更多或更少的行数,可以使用 -n
参数指定具体行数。此外,head
命令可以很好地与其他命令结合使用,如 grep
、sort
、awk
等,以实现更复杂的文本处理任务。
tail 指令
以下是 tail
指令的参数说明,以表格形式输出,以及一些使用例子:
参数 | 说明 |
---|---|
-n [行数] | 显示每个文件末尾的指定行数。 |
-f | 循环读取文件末尾的内容,常用于监控日志文件的实时更新。 |
-c [字节数] | 显示每个文件末尾的指定字节数。 |
-q | 仅显示文件内容,不显示文件名。 |
--pid=PID | 与 -f 一起使用,当指定的进程ID结束时,停止输出。 |
-F | 与 -f 类似,但是 -F 会跟踪文件名,即使文件被删除或更名。 |
使用例子:
-
显示文件的最后10行
tail filename.txt
-
显示文件的最后20行
tail -n 20 filename.txt
-
显示文件的最后100个字节
tail -c 100 filename.txt
-
循环显示日志文件的更新
tail -f access.log
-
循环显示日志文件的更新,并在指定进程结束后停止
tail --pid=$$ -f access.log
-
显示多个文件的最后10行
tail -n 10 file1.txt file2.txt
-
显示文件的最后10行,不显示文件名
tail -q -n 10 filename.txt
-
跟踪文件名,即使文件被删除或更名
tail -F /var/log/syslog
拓展 tail
指令:
tail
命令除了查看文件末尾的内容,还可以与其他命令结合使用,实现更复杂的功能:
-
显示当前目录下所有
.log
文件的最后5行tail -n 5 *.log
-
使用管道将
tail
与grep
结合,搜索包含特定文本的行tail -n 50 filename.txt | grep "特定文本"
-
显示某个文件的前10行(使用
head
的逆操作)tail -n +11 filename.txt | head -n 10
-
监控日志文件的新增内容,并且只显示包含特定文本的行
tail -f access.log | grep "特定文本"
tail
命令在处理日志文件或需要实时查看文件新增内容的场景中非常有用,特别是与 -f
参数结合使用时。此外,tail
命令可以很好地与其他命令结合使用,如 grep
、sort
、awk
等,以实现更复杂的文本处理任务。
grep 指令
以下是 grep
指令的参数说明,以表格形式输出,以及一些使用例子:
参数 | 说明 |
---|---|
-i | 忽略大小写。 |
-v | 显示不匹配的行。 |
-r 或 -e | 递归搜索指定的模式。 |
-n | 显示匹配行的行号。 |
-l | 仅显示包含匹配行的文件名。 |
-q | 静默模式,不输出任何内容,只通过退出状态表示匹配成功与否。 |
-c | 仅显示匹配行的数量。 |
-o | 仅显示匹配的部分。 |
-E | 启用扩展正则表达式。 |
-F | 将模式视为固定字符串,而不是正则表达式。 |
使用例子:
-
搜索包含 “error” 的行
grep "error" filename.txt
-
搜索不区分大小写的 “error”
grep -i "error" filename.txt
-
显示不包含 “error” 的行
grep -v "error" filename.txt
-
递归搜索当前目录及子目录中包含 “error” 的文件
grep -r "error" .
-
显示匹配行的行号
grep -n "error" filename.txt
-
仅显示包含 “error” 的文件名
grep -l "error" *.txt
-
静默模式,搜索 “error” 但不显示任何内容
grep -q "error" filename.txt
-
显示 “error” 出现的次数
grep -c "error" filename.txt
-
仅显示匹配的部分
grep -o "error" filename.txt
-
使用扩展正则表达式搜索包含 “error” 或 “fatal” 的行
grep -E "error|fatal" filename.txt
-
将模式视为固定字符串搜索
grep -F "error" filename.txt
拓展 grep
指令:
grep
命令可以与其他命令结合使用,实现更复杂的搜索和文本处理功能:
-
使用管道将
grep
与head
结合,显示文件最后几行中包含 “error” 的行tail -n 50 filename.txt | grep "error"
-
使用
grep
搜索多个文件,并显示每个匹配行的文件名和行号grep -n -e "error" -e "warning" *.log
-
使用
grep
搜索并排除某些匹配项grep "error" filename.txt | grep -v "ignore this error"
-
使用
grep
搜索并使用awk
进行进一步处理grep "error" filename.txt | awk '{print $1, $2}'
grep
是一个非常强大的文本搜索工具,它不仅可以用于简单的模式匹配,还可以通过正则表达式进行复杂的搜索。此外,grep
可以很容易地与其他命令和文本处理工具结合使用,以实现更高级的文本分析和处理。
sed 指令
sed
(Stream Editor)是一个用于处理文本流的命令行工具,它可以用来执行基本的文本转换。以下是 sed
指令的参数说明,以表格形式输出,以及一些使用例子:
参数 | 说明 |
---|---|
-n | 只打印模式匹配的行(通常与 sed 的正则表达式一起使用)。 |
-e 或 --expression | 添加 sed 命令到要执行的命令队列。 |
-f 或 --file | 从文件中读取 sed 命令。 |
-i | 直接修改文件,而不是输出到标准输出。 |
-r | 使 sed 支持扩展正则表达式。 |
-E | 使 sed 支持扩展正则表达式(与 -r 相同)。 |
使用例子:
-
文本替换,格式:
's/old_text/new_text/g'
将文件中的 “hello” 替换为 “hi”sed 's/hello/hi/g' filename.txt
-
基于模式选择行:格式:‘/模式/p’
仅打印包含 “error” 的行sed -n '/error/p' filename.txt # 输出 error 关键字相关的行 sed -n '/error/p' nothup.log
-
删除空白行
sed '/^$/d' filename.txt
-
将 “hello” 替换为 “hi” 并直接修改文件
sed -i 's/hello/hi/g' filename.txt
-
使用扩展正则表达式将行首的数字替换为大写字母
sed -r 's/^([0-9]+)/[A-Z]/g' filename.txt
-
从文件中读取
sed
命令并执行sed -f script.sed filename.txt
拓展 sed
指令:
sed
命令可以执行复杂的文本处理任务,包括搜索、替换、插入、删除和转换文本。以下是一些更高级的使用例子:
-
打印第5行到第10行
sed -n '5,10p' filename.txt
-
将文件中所有的 “foo” 替换为 “bar”,但不替换行首的 “foo”
sed 's/ foo/bar/g' filename.txt
-
在文件的每一行前添加行号
sed = filename.txt | sed 'N; s/\n/ /'
-
删除文件中所有行首和行尾的空格
sed 's/^[[:space:]]*//; s/[[:space:]]*$//' filename.txt
-
将文件中所有的 “foo” 和 “bar” 替换为 “baz”
sed 's/foo\|bar/baz/g' filename.txt
-
删除文件中所有注释(以 # 开始的行)
sed '/^#/d' filename.txt
sed
是一个非常强大的文本处理工具,它的命令和选项可以组合使用,以执行各种复杂的文本转换任务。通过熟练使用 sed
,你可以在命令行中完成许多原本需要编辑器或编程语言才能完成的工作。
awk
是一种功能强大的文本处理工具,它不仅可以执行复杂的文本模式扫描和处理,还可以进行数值运算和逻辑判断。以下是 awk
指令的参数说明,以表格形式输出,以及一些使用例子:
参数 | 说明 |
---|---|
-F [分隔符] | 设置输入字段分隔符,默认是空白字符。 |
-v [变量=值] | 赋值一个用户定义的变量。 |
-W [选项] | 启用某些特定版本的 awk 的额外功能。 |
-W [兼容性] | 设置 awk 的兼容性模式。 |
-W [函数名] | 强制使用 awk 的内置函数。 |
-W [限制] | 限制 awk 程序的资源使用。 |
-W [帮助] | 提供关于 awk 选项的帮助信息。 |
使用例子及参数说明:
-
打印文本文件的第2列
awk '{print $2}' filename.txt
参数说明:没有使用参数,
$2
表示第二列。 -
打印出包含特定文本的行
awk '/error/' filename.txt
参数说明:没有使用参数,
/error/
是一个模式匹配表达式。 -
将输入的字段分隔符设置为逗号,并打印第2列
awk -F, '{print $2}' filename.csv
参数说明:
-F,
设置字段分隔符为逗号。 -
对某列的数值求和
awk '{sum += $1} END {print sum}' filename.txt
参数说明:没有使用参数,
sum += $1
表示对第一列的数值进行累加。 -
为每个模式打印行号和行内容
awk 'NR > 10 {print NR, $0}' filename.txt
参数说明:没有使用参数,
NR
是awk
的内置变量,表示当前记录的行号。 -
使用变量并打印
awk -v tag="ERROR" '$0 ~ tag {print}' filename.txt
参数说明:
-v tag="ERROR"
为awk
脚本定义了一个名为tag
的变量。
拓展 awk
指令:
awk
的强大之处在于它能够执行复杂的文本处理任务,以下是一些更高级的使用例子:
-
打印出第二列文本长度大于10的行
awk 'length($2) > 10' filename.txt
-
对某一列的值进行排序并打印
awk '{print $1 | "sort"}' filename.txt
-
使用函数处理文本
awk '{if ($3 > 100) print $0}' filename.txt
-
将两列的值互换
awk '{temp=$1; $1=$2; $2=temp; print}' filename.txt
-
打印每个唯一的第一列值及其对应的第二列值的平均值
awk '{sum[$1] += $2; count[$1]++} END {for (i in sum) print i, sum[i]/count[i]}' filename.txt
awk
是一个非常灵活的命令行工具,它不仅可以用于简单的文本操作,还可以用于执行复杂的数据处理任务。通过熟练使用 awk
,你可以在命令行中完成许多原本需要编辑器或编程语言才能完成的工作。