Linux文件内容查看和编辑指南:cat、less、grep等常用命令详解

文章目录

Linux文件内容查看和编辑

1. 查看文件内容

cat用法

cat 命令用于显示整个文件的内容。它将文件的内容一次性输出到终端窗口。

例如,要显示名为 file.txt 的文件内容,可以运行以下命令:

复制代码
cat file.txt

小提示:如果文件内容太长无法一次性在终端显示完整,可以使用 less 或者 more 命令进行分页显示。

cat详解

连接多个文件并打印到标准输出。

概要

cat [OPTION]... [FILE]...

主要用途
  • 显示文件内容,如果没有文件或文件为-则读取标准输入。
  • 将多个文件的内容进行连接并打印到标准输出。
  • 显示文件内容中的不可见字符(控制字符、换行符、制表符等)。
参数

FILE(可选):要处理的文件,可以为一或多个。

选项

长选项与短选项等价

  • -A, --show-all 等价于"-vET"组合选项。
  • -b, --number-nonblank 只对非空行编号,从1开始编号,覆盖"-n"选项。
  • -e 等价于"-vE"组合选项。
  • -E, --show-ends 在每行的结尾显示'$'字符。
  • -n, --number 对所有行编号,从1开始编号。
  • -s, --squeeze-blank 压缩连续的空行到一行。
  • -t 等价于"-vT"组合选项。
  • -T, --show-tabs 使用"^I"表示TAB(制表符)。
  • -u POSIX兼容性选项,无意义。
  • -v, --show-nonprinting 使用"^"和"M-"符号显示控制字符,除了LFD(line feed,即换行符'\n')和TAB(制表符)。
  • --help 显示帮助信息并退出。
  • --version 显示版本信息并退出。
返回值

返回状态为成功除非给出了非法选项或非法参数。

例子
复制代码
# 合并显示多个文件
cat ./1.log ./2.log ./3.log
# 显示文件中的非打印字符、tab、换行符
cat -A test.log
# 压缩文件的空行
cat -s test.log
# 显示文件并在所有行开头附加行号
cat -n test.log
# 显示文件并在所有非空行开头附加行号
cat -b test.log
# 将标准输入的内容和文件内容一并显示
echo '######' |cat - test.log
注意
  • 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 catinfo coreutils 'cat invocation'
  • 当使用cat命令查看体积较大的文件时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容,为了控制滚屏,可以按Ctrl+s键停止滚屏;按Ctrl+q键恢复滚屏;按Ctrl+c(中断)键可以终止该命令的执行,返回Shell提示符状态。
  • 建议您查看体积较大的文件时使用less、more命令或emacs、vi等文本编辑器。

less

less 命令可以按页查看文件内容,并且提供了一些方便的浏览操作。

若要使用 less 查看文件内容,只需输入以下命令:

复制代码
less file.txt

此时会显示文件内容的第一页。您可以使用箭头键向上/向下滚动,或者按空格键向下翻页。

小提示:要退出 less 命令,可以按下 q 键。

less详解

分屏上下翻页浏览文件内容

补充说明

less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 命令允许用户向前或向后浏览文件,而 more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键。

语法
复制代码
less [选项] [参数]
选项
  • -e:文件内容显示完毕后,自动退出;
  • -f:强制显示文件;
  • -g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
  • -l:搜索时忽略大小写的差异;
  • -N:每一行行首显示行号;
  • -s:将连续多个空行压缩成一行显示;
  • -S:在单行显示较长的内容,而不换行显示;
  • -x<数字>:将TAB字符显示为指定个数的空格字符。
参数
  • 文件:指定要分屏显示内容的文件。
实例
复制代码
sudo less /var/log/shadowsocks.log

more

less 类似,more 命令也可用于按页查看文件内容。

要使用 more 查看文件内容,只需输入以下命令:

复制代码
more file.txt

less 不同的是,more 只允许您向前滚动一页,无法像 less 那样向后滚动。

小提示:要退出 more 命令,可以按下 q 键。

more详解

more 命令用于分页显示文件内容。

补充说明

more 命令是一个基于 vi 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,并且支持 vi 中的关键字定位操作。more 内置了许多快捷键,如:

  • H:获得帮助信息。
  • Enter:向下翻滚一行。
  • 空格:向下滚动一屏。
  • Q:退出命令。

该命令一次显示一屏文本,满屏后停下来,并且在屏幕底部出现一个提示信息,给出已经显示的文件百分比:"--More--(XX%)"。您可以按以下方法对提示进行回答:

  • Space 键:显示文本的下一屏内容。
  • Enter 键:只显示文本的下一行内容。
  • 按斜线符 |:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
  • H 键:显示帮助屏,该屏上有相关的帮助信息。
  • B 键:显示上一屏内容。
  • Q 键:退出 more 命令。
语法
复制代码
more [选项] [文件]
选项
  • -<数字>:指定每屏显示的行数。
  • -d:显示提示信息。
  • -c:不进行滚屏操作,每次刷新屏幕。
  • -s:将多个空行压缩成一行显示。
  • -u:禁止下划线。
  • +<数字>:从指定数字的行开始显示。
参数
  • 文件:要分页显示内容的文件。
实例

显示 file 文件的内容,但在显示之前先清屏,并且在屏幕最下方显示完成的百分比。

复制代码
more -dc file

显示 file 文件的内容,每10行显示一次,而且在显示之前先清屏。

复制代码
more -c -10 file

2. 文件搜索和过滤

grep

grep 命令用于在文件中搜索指定的模式。它可以根据您提供的模式进行匹配,并输出匹配到的行。

以下是使用 grep 的基本语法:

复制代码
grep pattern file.txt

其中,pattern 是您要搜索的模式,file.txt 是您要搜索的文件名。

例如,要在名为 file.txt 的文件中搜索包含单词 "hello" 的行,可以运行以下命令:

复制代码
grep hello file.txt

grep 命令还提供了许多选项,以便更灵活地进行搜索。您可以通过 man grep 命令查看完整的帮助文档。

grep详解

grep 命令用于在文件中搜索指定的模式并输出匹配的行。

语法
复制代码
grep [选项] 模式 [文件]
选项
  • -i:忽略大小写。
  • -v:反向匹配,只输出不匹配的行。
  • -r:递归搜索目录下的所有文件。
  • -l:只输出包含匹配模式的文件名。
  • -c:只输出匹配的行数。
  • -n:同时输出匹配的行和行号。
  • -H:当搜索多个文件时,显示匹配的行及文件名。
参数
  • 模式:要搜索的模式,可以是普通字符串或正则表达式。
  • 文件:指定要进行搜索的文件。
实例
  1. 在文件 example.txt 中搜索包含字符串 "hello" 的行,并输出匹配的行:

    复制代码
    grep "hello" example.txt
  2. 在多个文件中搜索匹配模式 "pattern" 的行,并显示匹配的行及文件名:

    复制代码
    grep -H "pattern" file1.txt file2.txt
  3. 在目录 directory 及其子目录中递归搜索匹配模式 "keyword" 的行,并输出匹配的行和行号:

    复制代码
    grep -r -n "keyword" directory
  4. 搜索文件中不包含模式 "exclude" 的行,并输出不匹配的行:

    复制代码
    grep -v "exclude" example.txt

find

find 命令可用于在指定路径下查找符合条件的文件。

以下是使用 find 的基本语法:

复制代码
find path -name filename

其中,path 是要搜索的路径,filename 是要搜索的文件名。

例如,要在当前目录及其子目录下查找名为 file.txt 的文件,可以运行以下命令:

复制代码
find . -name file.txt

find 命令还支持其他条件,如按照文件类型、大小等进行搜索。您可以通过 man find 命令查看完整的帮助文档。

find详解

find 命令用于在指定目录下查找符合条件的文件或目录。

语法
复制代码
find [路径] [表达式]
选项
  • -name:按照文件名匹配。
  • -type:按照文件类型匹配。
  • -size:按照文件大小匹配。
  • -mtime:按照文件修改时间匹配。
  • -exec:对搜索结果执行某个命令。
参数
  • 路径:需要查找的目录路径。
  • 表达式:用于指定搜索条件的表达式。
实例
  1. 在当前目录及其子目录中查找文件名为 "example.txt" 的文件:

    复制代码
    find . -name "example.txt"
  2. /var/log 目录中查找文件名以 ".log" 结尾的文件:

    复制代码
    find /var/log -name "*.log"
  3. 在当前目录及其子目录中查找文件类型为普通文件并且大小大于 1MB 的文件:

    复制代码
    find . -type f -size +1M
  4. /tmp 目录中查找最近 7 天内被修改过的文件,并将结果输出到 result.txt 文件:

    复制代码
    find /tmp -mtime -7 > result.txt
  5. 查找文件名以 ".txt" 结尾的文件,并将搜索结果传递给 -exec 后面的命令进行处理(如删除):

    复制代码
    find . -name "*.txt" -exec rm {} \;

awk

awk 是一种强大的文本处理工具,它可以根据指定的规则对文件进行处理和分析。

以下是使用 awk 的基本语法:

复制代码
awk 'pattern { action }' file.txt

其中,pattern 是要匹配的模式,action 是要执行的操作,file.txt 是要处理的文件名。

例如,要提取名为 file.txt 的文件中的第一列数据,可以运行以下命令:

复制代码
awk '{ print $1 }' file.txt

awk 还支持更复杂的操作,如条件判断、循环等。如果您想深入了解 awk 的用法,请参阅相关文档或教程。

awk详解

awk 是一种处理文本文件的命令行工具,用于分析和操作文本数据,支持各种数学和字符串函数以及条件语句和循环语句等。

语法
复制代码
awk [选项] '表达式' [文件]
选项
  • -F:指定输入文件的字段分隔符。
  • -v:定义一个变量并赋值。
  • -f:使用脚本文件来执行命令。
参数
  • 表达式:包含 awk 命令的脚本,用于对输入文件进行处理。
  • 文件:需要处理的输入文件。
实例
  1. 输出文件 /etc/passwd 中的第一列和第三列:

    复制代码
    awk -F ":" '{print $1, $3}' /etc/passwd
  2. 统计文件 /var/log/messages 中包含关键字 "error" 的行数:

    复制代码
    awk '/error/ {count++} END {print count}' /var/log/messages
  3. 使用变量和算术运算对文件 /proc/meminfo 中的数据进行处理:

    复制代码
    awk -v total=0 '/MemTotal/ {total+=$2} /SwapTotal/ {total+=$2} END {print total / 1024 " MB"}' /proc/meminfo
  4. 使用脚本文件 script.awk 对文件 /var/log/auth.log 进行处理:

    复制代码
    awk -f script.awk /var/log/auth.log

3. 文件编辑

nano

nano 是一个简单易用的文本编辑器,适合新手用户使用。

要使用 nano 编辑文件,只需输入以下命令:

复制代码
nano file.txt

此时会在终端窗口中打开 file.txt,您可以对文件进行编辑和保存。

小提示:在 nano 中,底部会显示一些常用的操作快捷键,如保存文件、退出编辑等。

nano详解

nano 是一个简单易用的文本编辑器,在终端中使用,支持基本的文本编辑操作和快捷键。

语法
复制代码
nano [选项] [文件]
选项
  • -B:启用备份功能,在保存文件时会创建备份文件。
  • -C:启用自动换行功能。
  • -E:禁用可视化滚动条。
  • -G:禁用鼠标支持。
  • -i:自动缩进新行。
  • -m:启用鼠标支持。
  • -O:禁用文件写入时的自动换行功能。
  • -R:只读模式打开文件。
  • -S:禁用滚动同步功能。
  • -T:指定语法高亮模式(如 -T python)。
参数
  • 文件:需要编辑的文件路径。
实例
  1. 使用 nano 编辑文件 example.txt

    复制代码
    nano example.txt
  2. 启用备份功能,并编辑文件 example.txt

    复制代码
    nano -B example.txt
  3. 使用鼠标支持,并编辑文件 example.txt

    复制代码
    nano -m example.txt
  4. 在只读模式下打开文件 example.txt

    复制代码
    nano -R example.txt

以上是对 nano 命令的简要介绍,您可以根据需要使用不同的选项和参数来进行文本编辑操作。在 nano 编辑器中,您可以使用快捷键进行剪切、复制、粘贴、搜索替换等常见操作,具体快捷键信息可以通过 Ctrl+G 或者 F1 键查看。

vi/vim

vivim 是一个功能强大的文本编辑器,广泛用于 Linux 系统。

要使用 vi 打开文件,只需输入以下命令:

复制代码
vi file.txt

此时会进入 vi 的编辑模式,您可以进行插入、删除、替换等操作。

小提示:要保存更改并退出 vi,可以按下 Esc 键,然后输入 :wq 并按回车键。

vi/vim详解

vivim 是一个强大的文本编辑器,广泛用于终端环境下进行文本编辑。vimvi 的增强版本,提供了更多功能和改进。

语法
复制代码
vi [选项] [文件]
vim [选项] [文件]
选项
  • -b:以二进制模式打开文件。
  • -c <命令>:执行指定的 Ex 命令。
  • -C:启用兼容模式。
  • -E:启动 Ex 模式(不显示界面)。
  • -g:启用图形界面模式。
  • -i <配置文件>:使用指定的配置文件。
  • -m:启用修改模式。
  • -n:禁用自动换行。
  • -R:只读模式打开文件。
  • -s:安静模式,抑制警告信息。
  • -u <vimrc>:使用指定的 vimrc 配置文件。
  • -w <脚本文件>:将录制的宏保存到指定的脚本文件中。
参数
  • 文件:需要编辑的文件路径。
实例
  1. 使用 vi 编辑文件 example.txt

    复制代码
    vi example.txt
  2. 使用 vim 编辑文件 example.txt

    复制代码
    vim example.txt
  3. 在只读模式下打开文件 example.txt

    复制代码
    vim -R example.txt
  4. 执行 vim 命令后执行指定的 Ex 命令,例如删除所有行:

    复制代码
    vim -c ":%d" example.txt

vivim 编辑器有很多强大的编辑和操作功能,包括插入、删除、复制、粘贴、搜索替换、分割窗口等。您可以使用快捷键和命令来完成各种编辑任务。详细的操作和命令信息可以通过 vim 的帮助文档(:help)来获取。

总结

在 Linux 中,我们经常需要查看和编辑文件的内容。下面我们总结了一些常用的命令。

  1. 查看文件内容:

    • catcat 命令是一个简单而常用的文件查看工具。它可以显示整个文件的内容,也可以将多个文件连接在一起显示。
    • lessless 命令是一个更加强大和灵活的文件查看工具。它可以按页浏览文件,支持前后搜索、向上向下滚动等功能。
    • moremore 命令和 less 类似,也是用来分页显示文件内容的工具。
  2. 文件搜索和过滤:

    • grepgrep 命令是用于在文件中搜索指定模式的工具。它可以根据正则表达式来匹配和筛选内容,并将匹配到的行输出。
    • findfind 命令用于在指定目录下搜索文件和目录。可以根据不同的条件来搜索文件,如按名称、大小、时间等进行过滤。
    • awkawk 是一种强大的文本处理工具,在文件中逐行扫描并进行各种操作。它可以根据自定义的规则提取、转换和处理文本数据。
  3. 文件编辑:

    • nanonano 是一个简单易用的文本编辑器,在终端中使用。它支持基本的文本编辑操作和快捷键,适合初学者使用。
    • vi/vimvivim 是强大的文本编辑器,广泛用于终端环境下进行编辑。它们提供了丰富的编辑和操作功能,适合有经验的用户使用。

以上是对 Linux 文件内容查看和编辑的一些常用命令的总结。根据不同的需求和使用场景,我们可以灵活选择合适的命令来处理文件。记住,熟练掌握这些命令将使你在 Linux 系统上更加得心应手!

相关推荐
To_再飞行17 分钟前
K8s 调度管理
linux·云原生·kubernetes
2302_7995257435 分钟前
【Hadoop】Hadoop集群安装中出现的问题
linux·hadoop
刘一说40 分钟前
Linux调试命令速查:Java/微服务必备
java·linux·微服务
枫の准大一1 小时前
【Linux游记】基础指令篇
linux
ypf52081 小时前
OrbStack 配置国内镜像加速
linux
Hello.Reader1 小时前
一文通关 Proto3完整语法与工程实践
java·linux·数据库·proto3
Hello.Reader1 小时前
一文吃透 Protobuf “Editions” 模式从概念、语法到迁移与实战
linux·服务器·网络·protobuf·editions
陌上花开缓缓归以1 小时前
linux ubi文件系统
linux
口嗨农民工2 小时前
exiftool 分析jpeg图片使用
linux
大明者省2 小时前
pycharm解释器使用anaconda建立的虚拟环境里面的python,无需系统里面安装python。
linux·python·pycharm