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

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.mzph.cn/pingmian/7818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

latex参考文献引用网址,不显示网址问题

以引用UCI数据集为例 1、加入宏包 \usepackage{url} 2、在参考文献bib文件中加入网址文献 misc{UCI, author {{D. Dua, E. Karra Taniskidou}}, year {2024}, title {UCI Machine Learning Repository}, howpublished {\url{http://archive.ics.uci.edu/ml}} } 完成&#x…

【机器学习系统的构建】从模型开发的过程讲清楚K-Fold 交叉验证 (Cross-Validation)的原理和应用

0、前言 最近在学习集成学习的时候了解到了k折交叉验证&#xff0c;其实在之前学习吴恩达老师的课程中也学过交叉验证&#xff0c;但是当时也不是很明白。这次借着自己的疑问以及网上搜找资料&#xff0c;终于把交叉验证给弄明白了。 在弄清楚前&#xff0c;我有这样几个疑问…

【typescript 小秘籍 - 类型自动推导】

今天发现个typescript的小技巧&#xff0c;原来在vscode里面 typescript是可以根据数据&#xff0c;自动推导其类型的&#xff0c;这样就不用自己去手敲定义了。比如 鼠标移动到person上&#xff0c;可以看到 其自动推导了person的类型 然后直接复制下来 直接使用即可。

Python运维-日志记录、FTP、邮件提醒

本章目录如下&#xff1a; 五、日志记录 5.1、日志模块简介 5.2、logging模块的配置与使用 六、搭建FTP服务器与客户端 6.1、FTP服务器模式 6.2、搭建服务器 6.3、编写FTP客户端程序 七、邮件提醒 7.1、发送邮件 7.2、接收邮件 7.3、实例&#xff1a;将报警信息实时…

基于Flask的岗位就业可视化系统(一)

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 前言 本项目综合了基本数据分析的流程&#xff0c;包括数据采集&#xff08;爬虫&#xff09;、数据清洗、数据存储、数据前后端可视化等 推荐…

ChatGPT-Next-Web漏洞利用分析(CVE-2023-49785)

1. 漏洞介绍 ​ 日常网上冲浪&#xff0c;突然粗看以为是有关Chat-GPT的CVE披露出来了&#xff0c;但是仔细一看原来是ChatGPT-Next-Web的漏洞。漏洞描述大致如下&#xff1a;&#xff08;如果有自己搭建了还没更新的速速修复升级防止被人利用&#xff0c;2.11.3已经出来了&am…

个人IP打造孵化运营产业链商业计划书

【干货资料持续更新&#xff0c;以防走丢】 个人IP打造孵化运营产业链商业计划书 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 PPT共90页&#xff08;完整资料包含以下内容&#xff09; 目录 个人IP运营方案&#xff1a; 1. 个人IP定位与构建 1.1 人格画像构…

《Python编程从入门到实践》day21

# 昨日知识点回顾 设置背景颜色 在屏幕中央绘制飞船 # 今日知识点学习 12.5 重构&#xff1a;方法_check_events()和_update_screen() 12.5.1 方法_check_events() import sys import pygame from Settings import Settings from Ship import Shipclass AlienInvasion:"…

基于FPGA的累加器及数码管显示VHDL代码Quartus仿真

名称&#xff1a;基于FPGA的累加器及数码管显示VHDL代码Quartus仿真&#xff08;文末获取&#xff09; 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; 累加器及数码管显示 1、可以通过按键输入1~9 2、数字输入后进行累加&#xff0c;将累加结果显示…

【计算机科学速成课】笔记三

文章目录 17.集成电路真空管时代晶体管时代集成电路时代印刷电路板时代光刻时代 17.集成电路 Over the past six episodes, we delved into software, 过去 6 集我们聊了软件 \N 从早期编程方式到现代软件工程 from early programming efforts to modern software engineerin…

部署YUM仓库以及NFS共享服务

YUM仓库部署 一.YUM概述 YUM仓库源是一种软件包管理工具&#xff0c;用于在Linux系统上安装、更新和删除软件包。YUM仓库源包含了软件包的元数据信息和实际的软件包文件。用户可以通过配置YUM仓库源&#xff0c;从中下载和安装软件包。 常见的YUM仓库源包括&#xff1a; 本…

截图工具Snipaste:不仅仅是截图,更是效率的提升

在数字时代&#xff0c;截图工具已成为我们日常工作和生活中不可或缺的一部分。无论是用于工作汇报、学习笔记&#xff0c;还是日常沟通&#xff0c;一款好用的截图工具都能大大提升我们的效率。今天&#xff0c;我要向大家推荐一款功能强大且易于使用的截图软件——Snipaste。…

强大的禄得可转债自定义因子轮动系统完成,可转债三低为例子

经过几天的测试终于完成了可转债自定义因子轮动&#xff0c;超过1000行的源代码 我提供了服务器的数据支持自动api下载&#xff0c;我给大家维护数据 网页 http://120.78.132.143:8023/ 录得数据支持http://120.78.132.143:8023/lude_data_app api数据支持&#xff0c;我提供…

Vulnhub项目:ICA: 1

1、靶机介绍 靶机地址&#xff1a;ICA: 1 ~ VulnHub 2、渗透过程 首先&#xff0c;部署好靶机后&#xff0c;进行探测&#xff0c;发现靶机ip和本机ip&#xff0c;靶机ip156&#xff0c;本机ip146。 然后查看靶机ip有哪些端口&#xff0c;nmap一下。 出现22、80、3306端口&a…

【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景API接口接口代码请求失败原因排查调通效果 常见返回类型相关文章 …

并行执行的概念—— 《OceanBase 并行执行》系列 一

From 产品经理&#xff1a; 这是一份姗姗来迟的关于OceanBase并行执行的系统化产品文档。 自2019年起&#xff0c;并行执行功能已被许多客户应用于多种场景之中&#xff0c;其重要性日益凸显。然而&#xff0c;遗憾的是&#xff0c;我们始终未能提供一份详尽的用户使用文档&…

VMware下Ubuntu的安装教程

文章目录 一、Ubuntu如何下载1.下载官方地址https://ubuntu.com/2.点选Ubuntu服务器版本3.点击下载Ubuntu服务器版本iso镜像二、VMware安装Ubuntu服务器系统1.创建虚拟机2.选择下载好的Ubuntu服务器镜像3.创建安装完成三、Ubuntu Server如何设置1.Ubuntu Server没有中文所以全都…

突破AI迷雾:英特尔携手星环科技打造向量数据库革新方案,直降大模型幻觉

去年爆火的大模型&#xff0c;正在从百模大战走向千行百业落地应用。不过行业数据规模有限&#xff0c;企业数据隐私安全的要求等等因素&#xff0c;都让行业大模型的准确率面临挑战。近期发布的《CSDN AI 开发者生态报告》数据显示&#xff0c;“缺乏数据/数据质量问题”在大模…

Pycharm远程同步的mapping与sync

用Pycharm进行项目远程部署的时候会遇到两个同步文件&#xff0c;一个是点击 tools—>deployment—>configration——>mapping 一个是链接虚拟环境的时候会有一个sync&#xff0c;那么这两种同步有什么区别呢&#xff1f; 区别就是&#xff0c;2包括1&#xff0c;要用…

常见错误以及如何纠正它们

团队和关键结果目标 (OKR) 之间的关系是深刻且至关重要的。总而言之&#xff0c;一切都应该是相互关联的。正如《团队的智慧》一书中所强调的&#xff1a; 在团队中&#xff0c;没有什么比每个成员对共同目标和一组相关绩效目标的承诺更重要的了&#xff0c;而团队对此负有共同…