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

2023-09-20 18:29:31

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 系统上更加得心应手!

更多推荐

使用Python构建强大的网络爬虫

介绍网络爬虫是从网站收集数据的强大技术,而Python是这项任务中最流行的语言之一。然而,构建一个强大的网络爬虫不仅仅涉及到获取网页并解析其HTML。在本文中,我们将为您介绍创建一个网络爬虫的过程,这个爬虫不仅可以获取和保存网页内容,还可以遵循最佳实践。无论您是初学者还是经验丰富的开发人员,本指南都将为您提供构建既有效

【C++ Efficiency】lazy evaluation(缓式评估)的4种用途

lazyevaluation(缓式评估)以某种方式撰写你的classes,使它们延缓运算,直到那些运算结果刻不容缓被迫切需要为止。lazyevaluation的4种用途1.ReferenceCounting(引用计数)classString{};//string类Strings1="Hello";Strings2=s1

Java版的数据结构——栈和队列

目录1.栈(Stack)1.1概念1.2栈的使用1.3栈的模拟实现1.4栈的应用场景1.4.1改变元素的序列1.4.2将递归转化为循环2.队列(Queue)2.1概念2.2队列的使用2.3队列模拟实现2.4循环队列3.双端队列(Deque)1.栈(Stack)1.1概念栈:一种特殊的线性表,其只允许在固定的一端进行插入

【Spatial-Temporal Action Localization(六)】论文阅读2021年

文章目录1.MultiSports:AMulti-PersonVideoDatasetofSpatio-TemporallyLocalizedSportsActions摘要和结论引言:针对痛点和贡献数据特点2.Actor-Context-ActorRelationNetworkforSpatio-TemporalAct

性能测试 —— Tomcat监控与调优:Jconsole监控

JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具,JConsole使用Java虚拟机(JavaVM),提供在Java平台上运行的应用程序的性能和资源消耗的信息。在Java平台,标准版(JavaSE平台)6,JConsole的已经更新到目前的外观,类似于Windows和GNOME桌面(其他

(2) Java 8 实战第二版——补充 收集数据、并行数据处理能力与性能

第6章用Collectors类创建和使用收集器将数据流归约为一个值汇总:归约的特殊情况数据分组和分区开发你的自定义收集器对一个交易列表按货币分组,获得该货币的所有交易额总和(返回一个Map<Currency,Integer>)。将交易列表分成两组:贵的和不贵的(返回一个Map<Boolean,List>)。创建多级分组

1397: 图的遍历——广度优先搜索

题目描述广度优先搜索遍历类似于树的按层次遍历的过程。其过程为:假设从图中的某顶点v出发,在访问了v之后依次访问v的各个未曾被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。若此时图中尚有顶点未

什么是Verilog?

什么是Verilog?Verilog是一种以代码形式来描述数字系统和电路的硬件描述语言(HDL)。它由GatewayDesignAutomation在20世纪80年代中期开发,后来被CadenceDesignSystems收购。Verilog广泛用于数字和混合信号系统的设计和验证,包括专用集成电路(ASIC)和现场可编

MeterSphere压测,出现HttpHostConnectException

现象:MeterSphere更换压力机后,压测出现出现HttpHostConnectException解决方案:net.ipv4.tcp_tw_reuse默认是0或者2,更改为1net.ipv4.tcp_tw_reuse,表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接;那么,当连接被复用

成都瀚网科技有限公司:抖店平台买家怎么修改评价?

在抖音电商平台上,买家的评价对店铺的声誉和销售业绩有着重要影响。然而,有时买家可能会因为某些原因想要修改之前的评价。那么,抖店平台上的买家如何修改评价呢?修改评价对店铺有什么影响?本文将介绍买家如何修改评价。并探讨可能的影响。1.如何修改抖店评论在抖店平台上,买家可以通过以下步骤修改之前的评论:A。打开抖音APP并登录

python项目2to3方案预研

目录官方工具2to3工具安装参数解释基本使用工具缺陷future工具安装参数解释基本使用工具缺陷python-modernize工具安装参数解释基本使用工具缺陷pyupgrade工具安装参数解释基本使用工具缺陷对比官方工具2to32to3是Python官方提供的用于将Python2代码转换为Python3代码的工具。它

热文推荐