Linux 文本编辑相关指令、指令参数、使用例子

一些常见的Linux文本编辑和处理相关的指令,以及它们的参数和使用例子,以表格形式列出:

序号指令名称指令参数及说明指令使用例子及说明
1cat-n: 显示每行的行号cat -n filename 显示文件内容及行号
2less-i: 交互模式,允许搜索less -i filename 交互式查看文件
3moremore filename 分页查看文件
4head-n : 显示前num行head -n 10 filename 查看文件前10行
5tail-n : 显示后num行tail -n 10 filename 查看文件后10行
6grep-r: 递归搜索目录;-i: 忽略大小写grep -r "text" /path 递归搜索字符串
7sed-e: 执行后续的表达式;-n: 仅打印sed命令的模式空间结果sed -e '5s/old/new/' -n filename 替换第5行中的old为new
8awk-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显示行结束符($

使用例子

  1. 查看整个文件的内容:

    cat filename.txt
    
  2. 查看文件的前5行:

    cat filename.txt | head -n 5
    
  3. 显示文件内容,并显示行号:

    cat -n filename.txt
    
  4. 将多个文件的内容拼接到一个文件中:

    cat file1.txt file2.txt > combined.txt
    
  5. 显示非打印字符:

    cat -A filename.txt
    
  6. 压缩连续空白行:

    cat -s filename.txt > compressed.txt
    

拓展 cat 指令

  • 快速查看日志文件:使用 cat 结合管道和 lessmore 来逐步查看大型日志文件。

    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 显示当前百分比

使用例子

  1. 查看文件内容:

    less filename.txt
    
  2. 查看文件内容并显示行号:

    less -N filename.txt
    
  3. 忽略大小写搜索:

    less -i filename.txt
    
  4. 横向滚动查看长行:

    less -S filename.txt
    
  5. 查看文件时,如果文件内容有更改,则退出:

    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不显示下划线,即使文件中包含下划线字符

使用例子

  1. 查看整个文件的内容:

    more filename.txt
    
  2. 查看文件内容,不显示提示信息:

    more -n filename.txt
    
  3. 清屏并从头开始显示文件:

    more -c filename.txt
    
  4. 交互式模式,提示用户操作:

    more -d filename.txt
    
  5. 到达文件末尾时退出:

    more -e filename.txt
    
  6. 跳过文件的第一行:

    more -p filename.txt
    
  7. 压缩显示多个空行:

    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 [字节数]显示每个文件开头的指定字节数。

使用例子:

  1. 显示文件的前10行

    head filename.txt
    
  2. 显示文件的前20行

    head -n 20 filename.txt
    
  3. 显示文件的前100个字节

    head -c 100 filename.txt
    
  4. 对显示的行进行排序(仅对第一行有效,因为head默认只显示前10行)

    head -n 1 filename.txt | sort
    
  5. 显示多个文件的前10行,每个文件之间用行分隔

    head -q -n 10 file1.txt file2.txt file3.txt
    
  6. 显示多个文件的前10行,每个文件的行不进行分隔

    head -n 10 file1.txt file2.txt file3.txt
    

拓展 head 指令:

除了基本的 head 用法,还可以与其他命令结合使用,实现更复杂的功能:

  1. 显示当前目录下所有 .txt 文件的前5行

    head -n 5 *.txt
    
  2. 显示当前目录下每个 .txt 文件的前5行,但只显示文件中有内容的行

    head -n 5 -- *.txt
    
  3. 使用管道将 headgrep 结合,搜索包含特定文本的行

    head -n 50 filename.txt | grep "特定文本"
    
  4. 显示某个文件的最后10行(使用 tail 的逆操作)

    head -n -10 filename.txt
    

请注意,head 命令默认情况下显示前10行,如果需要显示更多或更少的行数,可以使用 -n 参数指定具体行数。此外,head 命令可以很好地与其他命令结合使用,如 grepsortawk 等,以实现更复杂的文本处理任务。

tail 指令

以下是 tail 指令的参数说明,以表格形式输出,以及一些使用例子:

参数说明
-n [行数]显示每个文件末尾的指定行数。
-f循环读取文件末尾的内容,常用于监控日志文件的实时更新。
-c [字节数]显示每个文件末尾的指定字节数。
-q仅显示文件内容,不显示文件名。
--pid=PID-f 一起使用,当指定的进程ID结束时,停止输出。
-F-f 类似,但是 -F 会跟踪文件名,即使文件被删除或更名。

使用例子:

  1. 显示文件的最后10行

    tail filename.txt
    
  2. 显示文件的最后20行

    tail -n 20 filename.txt
    
  3. 显示文件的最后100个字节

    tail -c 100 filename.txt
    
  4. 循环显示日志文件的更新

    tail -f access.log
    
  5. 循环显示日志文件的更新,并在指定进程结束后停止

    tail --pid=$$ -f access.log
    
  6. 显示多个文件的最后10行

    tail -n 10 file1.txt file2.txt
    
  7. 显示文件的最后10行,不显示文件名

    tail -q -n 10 filename.txt
    
  8. 跟踪文件名,即使文件被删除或更名

    tail -F /var/log/syslog
    

拓展 tail 指令:

tail 命令除了查看文件末尾的内容,还可以与其他命令结合使用,实现更复杂的功能:

  1. 显示当前目录下所有 .log 文件的最后5行

    tail -n 5 *.log
    
  2. 使用管道将 tailgrep 结合,搜索包含特定文本的行

    tail -n 50 filename.txt | grep "特定文本"
    
  3. 显示某个文件的前10行(使用 head 的逆操作)

    tail -n +11 filename.txt | head -n 10
    
  4. 监控日志文件的新增内容,并且只显示包含特定文本的行

    tail -f access.log | grep "特定文本"
    

tail 命令在处理日志文件或需要实时查看文件新增内容的场景中非常有用,特别是与 -f 参数结合使用时。此外,tail 命令可以很好地与其他命令结合使用,如 grepsortawk 等,以实现更复杂的文本处理任务。

grep 指令

以下是 grep 指令的参数说明,以表格形式输出,以及一些使用例子:

参数说明
-i忽略大小写。
-v显示不匹配的行。
-r-e递归搜索指定的模式。
-n显示匹配行的行号。
-l仅显示包含匹配行的文件名。
-q静默模式,不输出任何内容,只通过退出状态表示匹配成功与否。
-c仅显示匹配行的数量。
-o仅显示匹配的部分。
-E启用扩展正则表达式。
-F将模式视为固定字符串,而不是正则表达式。

使用例子:

  1. 搜索包含 “error” 的行

    grep "error" filename.txt
    
  2. 搜索不区分大小写的 “error”

    grep -i "error" filename.txt
    
  3. 显示不包含 “error” 的行

    grep -v "error" filename.txt
    
  4. 递归搜索当前目录及子目录中包含 “error” 的文件

    grep -r "error" .
    
  5. 显示匹配行的行号

    grep -n "error" filename.txt
    
  6. 仅显示包含 “error” 的文件名

    grep -l "error" *.txt
    
  7. 静默模式,搜索 “error” 但不显示任何内容

    grep -q "error" filename.txt
    
  8. 显示 “error” 出现的次数

    grep -c "error" filename.txt
    
  9. 仅显示匹配的部分

    grep -o "error" filename.txt
    
  10. 使用扩展正则表达式搜索包含 “error” 或 “fatal” 的行

    grep -E "error|fatal" filename.txt
    
  11. 将模式视为固定字符串搜索

    grep -F "error" filename.txt
    

拓展 grep 指令:

grep 命令可以与其他命令结合使用,实现更复杂的搜索和文本处理功能:

  1. 使用管道将 grephead 结合,显示文件最后几行中包含 “error” 的行

    tail -n 50 filename.txt | grep "error"
    
  2. 使用 grep 搜索多个文件,并显示每个匹配行的文件名和行号

    grep -n -e "error" -e "warning" *.log
    
  3. 使用 grep 搜索并排除某些匹配项

    grep "error" filename.txt | grep -v "ignore this error"
    
  4. 使用 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 相同)。

使用例子:

  1. 文本替换,格式:'s/old_text/new_text/g'
    将文件中的 “hello” 替换为 “hi”

    sed 's/hello/hi/g' filename.txt
    
  2. 基于模式选择行:格式:‘/模式/p’
    仅打印包含 “error” 的行

    sed -n '/error/p' filename.txt
    # 输出 error 关键字相关的行
    sed -n '/error/p' nothup.log   
    
  3. 删除空白行

    sed '/^$/d' filename.txt
    
  4. 将 “hello” 替换为 “hi” 并直接修改文件

    sed -i 's/hello/hi/g' filename.txt
    
  5. 使用扩展正则表达式将行首的数字替换为大写字母

    sed -r 's/^([0-9]+)/[A-Z]/g' filename.txt
    
  6. 从文件中读取 sed 命令并执行

    sed -f script.sed filename.txt
    

拓展 sed 指令:

sed 命令可以执行复杂的文本处理任务,包括搜索、替换、插入、删除和转换文本。以下是一些更高级的使用例子:

  1. 打印第5行到第10行

    sed -n '5,10p' filename.txt
    
  2. 将文件中所有的 “foo” 替换为 “bar”,但不替换行首的 “foo”

    sed 's/ foo/bar/g' filename.txt
    
  3. 在文件的每一行前添加行号

    sed = filename.txt | sed 'N; s/\n/ /'
    
  4. 删除文件中所有行首和行尾的空格

    sed 's/^[[:space:]]*//; s/[[:space:]]*$//' filename.txt
    
  5. 将文件中所有的 “foo” 和 “bar” 替换为 “baz”

    sed 's/foo\|bar/baz/g' filename.txt
    
  6. 删除文件中所有注释(以 # 开始的行)

    sed '/^#/d' filename.txt
    

sed 是一个非常强大的文本处理工具,它的命令和选项可以组合使用,以执行各种复杂的文本转换任务。通过熟练使用 sed,你可以在命令行中完成许多原本需要编辑器或编程语言才能完成的工作。

awk 是一种功能强大的文本处理工具,它不仅可以执行复杂的文本模式扫描和处理,还可以进行数值运算和逻辑判断。以下是 awk 指令的参数说明,以表格形式输出,以及一些使用例子:

参数说明
-F [分隔符]设置输入字段分隔符,默认是空白字符。
-v [变量=值]赋值一个用户定义的变量。
-W [选项]启用某些特定版本的 awk 的额外功能。
-W [兼容性]设置 awk 的兼容性模式。
-W [函数名]强制使用 awk 的内置函数。
-W [限制]限制 awk 程序的资源使用。
-W [帮助]提供关于 awk 选项的帮助信息。

使用例子及参数说明:

  1. 打印文本文件的第2列

    awk '{print $2}' filename.txt
    

    参数说明:没有使用参数,$2 表示第二列。

  2. 打印出包含特定文本的行

    awk '/error/' filename.txt
    

    参数说明:没有使用参数,/error/ 是一个模式匹配表达式。

  3. 将输入的字段分隔符设置为逗号,并打印第2列

    awk -F, '{print $2}' filename.csv
    

    参数说明:-F, 设置字段分隔符为逗号。

  4. 对某列的数值求和

    awk '{sum += $1} END {print sum}' filename.txt
    

    参数说明:没有使用参数,sum += $1 表示对第一列的数值进行累加。

  5. 为每个模式打印行号和行内容

    awk 'NR > 10 {print NR, $0}' filename.txt
    

    参数说明:没有使用参数,NRawk 的内置变量,表示当前记录的行号。

  6. 使用变量并打印

    awk -v tag="ERROR" '$0 ~ tag {print}' filename.txt
    

    参数说明:-v tag="ERROR"awk 脚本定义了一个名为 tag 的变量。

拓展 awk 指令:

awk 的强大之处在于它能够执行复杂的文本处理任务,以下是一些更高级的使用例子:

  1. 打印出第二列文本长度大于10的行

    awk 'length($2) > 10' filename.txt
    
  2. 对某一列的值进行排序并打印

    awk '{print $1 | "sort"}' filename.txt
    
  3. 使用函数处理文本

    awk '{if ($3 > 100) print $0}' filename.txt
    
  4. 将两列的值互换

    awk '{temp=$1; $1=$2; $2=temp; print}' filename.txt
    
  5. 打印每个唯一的第一列值及其对应的第二列值的平均值

    awk '{sum[$1] += $2; count[$1]++} END {for (i in sum) print i, sum[i]/count[i]}' filename.txt
    

awk 是一个非常灵活的命令行工具,它不仅可以用于简单的文本操作,还可以用于执行复杂的数据处理任务。通过熟练使用 awk,你可以在命令行中完成许多原本需要编辑器或编程语言才能完成的工作。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冲上云霄的Jayden

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值