【Linux】文件内容相关的命令,补充:管道符

embedded/2024/11/17 5:21:41/

1、查看文件内容 

(1-1)查看文件内容:cat,tac,head,tail
查看文件内容cat 文件名
查看文件内容并显示行号cat -n 文件名
倒着查看文件内容(从最后一行开始)tac 文件名
查看文件前10行内容head 文件名
查看文件前num行内容head -n num 文件名
查看文件最后10行内容tail 文件名
查看文件最后num行内容tail -n num 文件名

(1-2)查看文件内容并显示行号:cat,nl

cat -n 默认空行也有行号。nl 默认空行没有行号。

查看文件内容,显示行号(空行也有行号)cat -n 文件名nl -b a 文件名
查看文件内容,显示行号(空行没有行号)cat -b 文件名nl 文件名

查看文件内容,显示行号(行号等宽):nl -b a -n rz 文件名

查看文件内容,显示行号(行号指定宽度):nl -b a -n rz -w 指定宽度 文件名

注:空行也显示行号。若空行不显示行号,则去掉 -b a 即可。

(1-3)翻页查看文件内容:more,less

more:

  • 只能向下翻页。向下一行(Enter键),向下一页(空格键)。
  • 退出:(快捷键)Ctrl + C 或者 q
more命令的常用选项说明
-num一次显示num行
+num从第num行开始显示

 

less:

  • 向上翻页:向上一行(向上键),向上半页(Shift+PgUp 或者 u),向上一页(PgUp 或者 b)。
  • 向下翻页:向下一行(Enter键 或者 向下键),向下半页(Shift+PgDn 或者d),向下一页(PgDn 或者 空格键)。
  • 退出:q
less命令的常用选项说明
-N显示行号
-m显示百分比
-e文件结束,自动离开

(1-4)监视文件末尾内容变动:tail

当文件末尾在不断追加内容,若想要监视文件末尾内容的变动并实时显示变动内容,则可以使用tail -f 。

监视文件末尾内容变动:tail -f 文件名

停止监视(快捷键):Ctrl + C

2、统计、排序、去重

(2-1)统计:wc(word count)
统计文件内容信息(行数 单词数 字节数)wc 文件名
统计文件内容有多少行(lines)wc -l 文件名
统计文件内容有多少单词数(字符串words)wc -w 文件名
统计文件内容有多少字节数(字符chars)wc -c 文件名

(2-2)排序:sort 

默认第一列字符根据ASCII码的次序排序。

sort命令的常用选项说明
-c判断是否已排过序
-r倒着排序
-f忽略大小写
-n按数字大小排序
-t指定分隔符(默认空格分隔),一般与-k一起用。
-k指定需要排序的列。分隔符不是空格时,与-t一起用。
-o将排序后的内容输出到指定文件
-u去重

(2-3)去重:uniq
去重(整行相同且连续才去重)uniq 文件名
去重,并统计重复次数uniq -c 文件名

注意:uniq只能去重连续的相同行数据,若非连续,则不会去重。可先排序再去重。

管道符:"|"。前面命令的结果给后面的命令使用。 

3、过滤文件内容

(3-1)grep:按行过滤
grep命令的常用选项说明(默认模糊匹配)
-w精确匹配
-n显示行号
-i忽略大小写

-c

统计行数
-v取反
-o只显示匹配结果
-An匹配结果中也显示最后一条的下面n行
-Bn匹配结果中也显示第一条的上面n行
-Cn匹配结果中也显示第一条的上面n行和最后一条的下面n行
-E正则表达式(普通)
-P正则表达式(Perl)
-r从目录中递归过滤所有指定文件中匹配的行

 (3-2)sed:按行过滤,可删除或替换
sed命令的常用选项说明
-n只显示结果
-i修改原文件
sed命令涉及的动作字符格式备注
打印p'/匹配的内容/p'
打印整行p'起始行号,结束行号p'
删除匹配内容所在的行d'/匹配的内容/d'

删除整行d'行号d'$为最后一行
删除多行d'起始行号,结束行号d'
替换s's/旧值/新值/' 

's/旧值/新值/gI' 。

g表示全局替换,

I(大写字母I)表示忽略大小写

整行替换c'起始行号,结束行号c 新内容'
当前下方插入一行a'行号a  插入的内容'若多行,行末用"\"
当前上方插入一行i'行号i  插入的内容'若多行,行末用"\"
对查找的内容再执行命令操作{...}'/匹配的内容/{再执行的命令操作}'

注意:p 打印,默认输出所有内容,若只输出匹配到的行数据,使用-n。

d 删除、s 替换、c 整行替换、a 后面增行、i 前面增行,默认不修改原文件。若修改原文件,使用-i。

修改原文件需慎重,最好先备份一份。可以使用输出重定向,输出到指定文件中。

(3-3)awk:按列过滤
  • 查看某列:awk  '{print $列号}'  文件名
  • 查看多列:awk  '{print $列号1, $列号2}'  文件名
  • 查看某行:awk  'NR==行号'  文件名
  • 查看多行:(举例)awk  'NR>=行号1 &&  NR<=行号2'  文件名
  • 查看含指定内容的行:awk  '/匹配的内容/'  文件名
  • 嵌套过滤:(举例)awk  'NR==行号/匹配的内容/{print $列号}'  文件名

注意:默认以空格为分隔符。可用"-F"指定分隔符。

过滤多列时,若多列之间有","则默认多列之间输出空格,可指定其他输出分割符。

  • 可使用OFS内置变量指定输出分隔符,例如:OFS=' * ',即awk  '{print $列号1, $列号2}'  OFS=' * '  文件名。
  • 也可不使用","而用双引号指定输出分隔,例如:" * ",即awk  '{print $列号1" * "$列号2}'  文件名。

4、输入输出重定向

一般从键盘输入,输出到显示屏。

  • 输出重定向:输出到文件中。符号:">"(从文件开头写入),">>"(追加到文件末尾)。
  • 输入重定向:从文件获取输入。符号:"<"(从文件读取),"<<"(重定向到交互式shell脚本或程序)。

(4-1)输出重定向

注意:0:标准输入(STDIN),1:标准输出(STDOUT),2:标准错误输出(STDERR)。

1>之间不能有空格,2>之间也不能有空格。

直接输出重定向到文件,则可以清空文件内容。

(4-2)输入重定向

输入重定向获取的数据,可以输出重定向到指定文件中。

5、编辑文件内容:vi

注意:若屏幕最下方左侧显示"--INSERT--",则表示处于输入模式(也称编辑模式),可编辑文件内容。

若想要使用快捷键或命令行操作,则按ESC键退出输入模式,回到命令模式下操作。

命令行操作即输入 ":命令" ,按回车执行命令。输入的命令将显示在屏幕最下方左侧。

(1)先用vi打开文件:vi 文件名

若文件不存在,则创建新文件。打开文件后,则进入命令模式。命令模式下,不能输入内容,可以使用快捷键或命令行操作。

# vi打开文件时,光标可直接跳到指定行首
vi 文件名 +行号

命令模式下,常用快捷键或命令行操作: 

u复原前一个动作(即撤销)
Ctrl + r重做上一个动作(即恢复)
:set nu显示行号(:set number)
:set nonu取消行号
翻页、光标跳转位置
常用快捷键或命令行操作说明
左下上右键 或者 hjkl左下上右移动光标
Ctrl + f下翻一页
Ctrl + d下翻半页
Ctrl + b上翻一页
Ctrl + u上翻半页
gg跳转到文件开头(第一行)
G跳转到文件末尾(最后一行)
8gg 或者 8G 或者 :5跳转到第8行
0跳转到行首
^跳转到行首第一个字符(跳过行首的空格)
$跳转到行尾
删除、复制、粘贴
常用快捷键或命令行操作说明
dd剪切/删除当前行
ndd删除当前行及下方共n行
d1G删除当前行到第一行所有数据
dG删除当前行到最后一行所有数据
d0(数字0)删除当前字符到行首的数据
d$删除当前字符到行末的数据
dw删除一个单词
x删除一个字符
nx删除n个字符
yy复制当前行
nyy复制当前行及下方共n行
y1G复制当前行到第一行所有数据
yG复制当前行到最后一行所有数据
y0(数字0)复制当前字符到行首的数据
y$复制当前字符到行末的数据
p(小写字母)粘贴到当前行的下方
P(大写字母)粘贴到当前行的上方
查找、替换
常用快捷键或命令行操作说明
/查找的内容查找(从光标开始往下查找)
?查找的内容查找(从光标开始往上查找)
n查找到一个,按n继续往上/下查找下一个
N查找到一个,按N反方向往上/下查找下一个
:起始行号,结束行号s/旧值/新值/gc

在某区域替换内容。1,$ 或者% 即第一行到最后一行。

c 显示提示信息供用户确认。

(2)进入输入模式

处于命令模式下,可按 i / a / o 进入输入模式,开始编辑文件内容。

i在光标所在位置,开始输入
a光标向后移动一位,开始输入
o光标下方新插入一行,从新行开始输入

编辑过程中,可以按ESC键退出输入模式,回到命令模式。命令模式下,可使用快捷键或命令行操作。

 

(3)编辑完,退出

先按ESC键退出输入模式,回到命令模式下。再输入":命令",按回车执行命令。

常用命令说明
:w保存文件
:q退出
:wq保存,并退出
:q!不保存,并退出

注意:若vi打开文件编辑时,突然中断退出,则重新vi打开,都会提示如下:

原因:因为vi打开文件时会生成相对应的临时隐藏文件".文件名.swp",突然中断,临时文件还在,再次vi打开就会提示已经有这个临时文件了。

解决办法:第一步:恢复正在编辑时突然中断的文件:vi -r 文件名

第二步:删除vi生成的临时隐藏文件".文件名.swp"。

后话:Linux内置的文本编辑器 vi 功能已经很强大。而vim是从vi发展出来的,被广泛使用,可以不同颜色加亮代码。若要使用vim,需安装。


补充:管道符

管道符:"|"。前面命令的标准输出会作为后面命令的标准输入。简单的说,就是前面命令的结果给后面的命令使用。 


 


http://www.ppmy.cn/embedded/37064.html

相关文章

练习题(2024/5/7)

1验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 …

如何把Java的定时任务写到数据库里面去配置?

之前是这样写的&#xff0c;每次要改定时器都要修改发版&#xff0c;很麻烦&#xff1a; package cn.net.cdsz.ccb.common.scheduled;import cn.net.cdsz.ccb.business.config.Custom; import cn.net.cdsz.ccb.business.service.CCBBankService; import cn.net.cdsz.ccb.busin…

【JVM】JMM 内存模型

JMM 概述 内存模型 java[内存模型](Java Memory Model) 和 [内存结构]JMM规定了在多线程下对共享数据的读写时&#xff0c;对数据的原子性 有序性 可见性的规则和保障。 原子性 原子性问题: i和i–不是原子性操作! 所以一个i指令会在执行过程中被另一个线程执行! 问题分…

docker jenkins 部署springboot项目

1、创建jenkins容器 1&#xff0c;首先&#xff0c;我们需要创建一个 Jenkins 数据卷&#xff0c;用于存储 Jenkins 的配置信息。可以通过以下命令创建一个数据卷&#xff1a; docker volume create jenkins_data启动 Jenkins 容器并挂载数据卷&#xff1a; docker run -dit…

爬取B站评论:Python技术实现详解

引言 在当今信息爆炸的互联网时代&#xff0c;用户生成的内容不断涌现&#xff0c;其中包括了各种各样的评论。而B站作为一个充满活力的视频分享平台&#xff0c;其评论区更是一个充满了各种各样精彩评论的宝藏地。那么&#xff0c;有没有一种简单的方法可以将这些评论收集起来…

设计模式-04 设计模式-Proxy Pattern 代理模式

设计模式-04 设计模式-Proxy Pattern 代理模式 1.定义 代理模式 为一个对象提供一个代理或占位符&#xff0c;以便控制对该对象的访问和操作。代理可以拦截并修改对目标对象的调用&#xff0c;从而实现以下目的&#xff1a; 控制访问&#xff1a;限制对敏感或昂贵对象的访问…

路飞吃桃递归问题

在写代码之前&#xff0c;补充两个知识点 1.C语言递归的模版 2.递归是怎么工作的 好!话不多说让我们开始吧&#xff1a; 我们知道路飞吃了n天&#xff0c;每次都是吃一半&#xff0b;1&#xff0c;知道最后一天&#xff0c;只有一个桃子了&#xff0c;所以就可以列出式子&…