首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在bash中逐行读取和打印文件,以及每行的行号和总行数

在bash中,可以使用循环结构和内置命令来逐行读取和打印文件,并获取每行的行号和总行数。

以下是一个示例脚本:

代码语言:txt
复制
#!/bin/bash

file_path="path/to/your/file.txt"
line_number=0

# 逐行读取文件
while IFS= read -r line; do
  ((line_number++)) # 行号自增

  # 打印行号、行内容和总行数
  echo "Line $line_number: $line"
done < "$file_path"

# 打印总行数
echo "Total lines: $line_number"

上述脚本中,file_path变量指定了要读取的文件路径。通过while循环和read命令,每次读取文件的一行内容,并将其存储在line变量中。IFS= read -r line用于确保读取的行内容保持原样,不会被自动分割或解析。((line_number++))用于自增行号。

在循环内部,可以根据需要对每行的内容进行处理或打印。上述示例中,我们简单地使用echo命令打印了行号、行内容和总行数。

要运行该脚本,将path/to/your/file.txt替换为实际的文件路径,并保存为一个.sh文件。然后,在终端中执行bash script.sh即可。

这个脚本适用于任何文本文件,并且可以方便地获取每行的行号和总行数。在实际应用中,可以根据需要进行进一步的处理,比如筛选特定行、统计关键词出现次数等。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iothub
  • 移动推送服务(信鸽):https://cloud.tencent.com/product/tpns
  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

awk命令详解

二、基础语法 2.1.记录与字段 awk是一种处理文本文件编程语言,文件每行数据都被称为记录,默认以空格或制表符为分隔符,每条记录被分成若干字段(列),awk每次从文件读取一条记录。...NF}' #输出每行数列数 awk '{print $NF}' /tmp/hosts #打印每行数最后一列 awk '{print $(NF-1)}' /tmp/hosts #打印每行倒数第二列...cp /etc/hosts /tmp/hosts awk '{print $0}' /tmp/hosts #打印每行全部内容 同样是输出行号,NR将所有文件数据视为一个数据流,而FNR则是将多个文件数据视为独立若干个数据流...x+8}' #x默认为0 2.11.循环计数 awk '/bash$/{x++} END{print x}' /etc/passwd 逐行读取/etc/passwd文件,x初始值为0,匹配到以...(t)}' #返回数组元素个数 awk '{print length()}' /etc/shells #返回文件每行字符长度 index(字符串1,字符串2) 返回字符串2字符串1位置

1.9K30

awk工具详解

它是专门为文本处理设计编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作数据可以来自标准输入也可以是管道或文件 工作原理(1): 当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理...,不会默认输出 如果没有定义匹配条件默认是匹配所有数据行,awk隐含循环,条件匹配多少次动作就会执行多少次 工作原理(2): 逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得各个字段保存到内建变量...sed命令常用于一整行处理,而awk比较倾向于将一行分成多个””字段”然后再进行处理。awk信息读入也是逐行读取,执行结果可以通过print功能将字段数据打印显示。...使用awk命令过程,可以使用逻辑操作符” &&”表示”与”、”| |”表示”或”、”!.”表示非” ;还可以进行简单数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余乘方。...行号追加当有多个文件时 awk ‘BEGIN{RS=”:”}{print $0}’ zz   ##打印出以冒号换行输出 awk ‘BEGIN{ORS=” “}{print $0}’ zz   ##把多行合并成一行输出

2.9K20

Linux 命令实战(六)

AWK实现原理 当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出。...逐行读取文本,默认以空格或tab键为分割符进行分割,将分割所得各个字段,保存到内建变量,并按模式或或条件执行编辑命令。...AWK使用格式 格式1: awk 【选项】 '模式或条件{操作} ' 文件名 内置函数 内置函数 含义 NR 表示该行第几行 NF 表示该行有多少列 FNR 读取文件记录数(行号),从1开始...,新文件重新从1开始计数 FS 字段分隔符,指定每行字段分隔符,默认空格,相当-F OFS 表示输出内容以什么为分割符(默认空格) RS 行分割符,awk从文件读取资料时,将根据RS定义把资料切割成许多条记录...==2{print $1}' passwd1bin passwd1,每列按照:分割,第一列第二列按照#分割输出(OFS定义了输出时以什么分隔,12间要用#分隔) [root@host1 test]#

24040

sed、awk——运维必须掌握两个工具

今天主要跟大家介绍2个非常霸道工具,sedawk,本篇文章将介绍这两个工具日常运维常用用法,工作这两个工具要掌握好了结合一些管道命令、正则表达式,日常处理事务简直666啦!...删除第1行,第10行,留意行号变化 ? 将passwd文件包含/sbin/nologin替换为/bin/bash打印输出 ?...3.举例 我们还是以/etc/passwd 文件为例。以:为分隔符,打印passwd 文件每行用户名称user($1)及用户uid($3)。补充:$0代表一整行数意思 ?...打印passwd文件uid>=500 用户名称及UID ? 打印passwd每一行数据,并以:为分隔符计算每行字符总数打印每行数末尾 ?...打印passwd文件以:为分隔符第三个字段即UID>=500数据所在行号 ?

65960

Shell实用工具

p print打印, 打印出匹配内容,通常与-n选项用 s substitute替换, 替换掉匹配内容 = 用来打印被匹配行号 n 读取下一行,遇到n时会自动跳入下一行 特殊符号 命令...sed高级用法: 缓存区数据交换 模式空间与暂存空间介绍 首先需要明白, sed处理文件逐行处理, 即读取一行处理一行,输出一行; sed把文件读出来每一行存放空间叫模式空间, 会在该空间中对读到内容做相应处理...1{h;d}对模式空间中第一行数据同时进行复制到暂存空间(覆盖方式)删除模式空间中第一行数据 ?...示例: 打印文件每行属性信息 统计passwd: 文件名,每行行号每行列数,对应完整行内容: awk -F ':' '{print "文件名:" FILENAME ",行号:" NR ",列数...截取某个文件列, 重点是按照列分割, 这个命令不适合截取文件中有多个空白字符字段 sed: 增删改查数据. sed用于文件以行来截取数据进行增删改查 awk:截取分析数据.

7.8K10

shell脚本–sed用法

大家好,又见面了,我是你们朋友全栈君。 sed处理文本时是逐行读取文件内容,读到匹配行就根据指令做操作,不匹配就跳过。...=:用来打印被匹配行号 n:读取下一行,遇到n时会自动跳入下一行 r,w:读写编辑命令,r用于将内容读入文件,w用于将匹配内容写入到文件 2.sed命令实例: 示例1:向文件添加或插入行 sed...1.txt #打印1到3行 sed -n ‘3,$p’ 1.txt #打印从第3行到最后一行内容 sed -n ‘/you/p’ 1.txt #逐行读取文件打印匹配you行...1.txt #打印1.txt文件最后一行行号(即文件有多少行,wc -l 功能类似) sed -n ‘/error/=’ 1.txt #打印匹配error行号 sed -n...‘/error/{=;p}’ 1.txt #打印匹配error行号内容(可用于查看日志中有error行及其内容) 示例7:从文件读取内容 sed ‘r 2.txt’ 1.txt

3.8K20

使用awksed获取文件奇偶数行方法总结

原来:FNR,是每个文件,换了一个文件,会归零;而NR则每个文件会累加起来 7) 使用简单样式来输出 下面表示"行号占用5位,不足补空格" [root@localhost ~]# awk '{...,此处用他作为条件,如果是空行,则NF为0,跳过;否则,用动态变量a存储非空行数目 9) 计算行数:效果类似wc -l END表示每行都处理完了后,执行,此时NR就是最后一行行号,也就是行数了...#awk 'END { print NR }' test.file 10) 计算每一行 s用作每行累加,从1到NF(每行字段数),依次累加 # awk '{ s = 0; for...$i; print }' test.file 13) 计算文件字段(例如计算单词数) # awk '{ total = total + NF }; END { print total }'...test.file 14) 计算匹配指定信息行数 # awk '/Linux/ { n++ }; END { print n+0 }' test.file 15) 找到文件每行第一个字段

1.3K40

awk命令详解+示例

NR 记录当前已读入行数量(行数) awk ‘{print NR}’ a.txt FNR 当前行在源文件行号 awk ‘{print “第”FNR”行”,“有“NF”列”}’ a.txt b.txt...“no login 用户个数是 ” i}’ /etc/passwd 统计系统中使用bash作为登录Shell用户个数:预处理时赋值变量x=0,然后逐行读入/etc/passwd文件检查,如果发现登录...综计文件以“:”分隔字段个数:(需要每处理一行时将当前行字段数(内置变量NF)计,因此可在BEGIN时定义一个初始变量,过程称求和,最后END时输出结果) # awk -F: ‘BEGIN{...本任务行号每行实际文本值是一致,那么根据NR或者$0行值进行判断都是可以。...###筛选A文件第六列七列都大于5数据,显示所有符合结果 awk '{if ($6>5 || $7>5) print}' A|less ###筛选A文件第六列或七列都大于5数据,显示所有符合结果

2.4K10

Linux 流编辑器 sed 详解

一般来说,sed 编辑器会执行以下操作: 1)一次从输入读取行数据; 2)根据所提供编辑器命令匹配数据; 3)按照命令修改流数据; 4)将新数据输出到 STDOUT。... sed 编辑器匹配完一行数据后,它会读取下一行数据并重复这个过程,直到处理完所有数据。使用 sed 命令打开一个 sed 编辑器。...y 逐字符替换 p 打印文本行 = 打印行号 w 向文件写入数据 r 从文件读取数据 二、使用 sed 命令进行文本替换 sed 使用 s 命令来进行文本替换操作,基本格式如下: sed 's...使用 s 命令时,sed 编辑器会在一行一行地读取文件 file,并在每行查找文本 srcStr,如果找到了,则将该处 srcStr 替换为 dstStr。...作为字符串分隔符 默认情况下,替换命令只会替换掉目标文本每行第一次出现地方。若想要替换掉每行中所有匹配地方,可以使用替换标记 g。替换标记放在编辑命令末尾。

1.5K10

Linux系统开发: 学习linux三剑客(awk、sed、grep)(上)

grep "name" demo.sh -c # demo.sh查找name出现行数 显示查找内容及其前后行内容 需运用 -A 行数/-B 行数/-C 行数 参数 $ grep "name...3.2 sed工作流程 1、sed默认不编辑原文件,而是逐行操作,复制一份到指定内存(pattern space,模式空间) 2、pattern space内进行模式匹配,即指定条件做匹配   不满足模式...n 读取下一个输入行,用下一个命令处理新行而不是用第一个命令。 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。 p 打印模板块行。...'表达式' | sed '表达式' 等价于: sed '表达式; 表达式' 3.9 常用示例 显示输入文件行号 需用到命令:=:打印当前行号码(包括空白行) 需用到元字符集:....=" 123.txt #只显示空白行行号 显示文件行数 需用到元字符集:$:匹配到行结束 $ sed '$=' 123.txt #可显示123.txt内总共有多少行,也就是最后一行行号

9.1K20

shell之awk

一个强大文本分析工具,把文件逐行读入, 以空格为默认分隔符将每行切片, 切开部分再进行分析处理。...:找到匹配内容时所执行一系列命令 选项参数说明 -F 指定输入文件折分隔符 -v 赋值一个用户定义变量 案例实操 搜索passwd文件以root关键字开头所有行,并输出该行第7列。...awk -F: '/^root/{print $7}' passwd /bin/bash 搜索passwd文件以root关键字开头所有行,并输出该行第1列第7列,中间以“,”号分割。...awk -F: '/^root/{print $1","$7}' passwd root,/bin/bash 注意:只有匹配了pattern行才会执行action 只显示/etc/passwd第一列第七列...(每行行号) NF 浏览记录个数(切割后,列个数) 案例实操 统计passwd文件名,每行行号每行列数 awk -F: '{print "filename:" FILENAME "

45220

快速理解linux文本分析利器awk

awk是什么 如果工作需要操作linux比较多,那么awk是非常值得学习 awk是一个极其强大文本分析工具,把文件逐行读入,以指定分隔符将每行切片,切开部分再进行各种分析处理 可以使用awk...创建程序,来读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有很多其他功能 awk使用示例 通过一些简单示例来认识一下awk (1)$ ll | awk '{print $9...}' 这个命令结果是只显示文件名列表 工作过程 awk命令接收 ll 结果信息,并逐行处理 对每一行结果记录按空格(空格是默认分隔符)分割,并打印出第9列信息 语法说明 单引号('')里面的部分是...,例如这个命令打印出了 ‘文件名’ - FILENAME ‘行号’ - NR ‘列号’ - NF (5)awk -F ':' 'BEGIN {print "header"} {print $1}...{print size/1024/1024,"M"}' 此命令统计文件夹下文件大小,以M为单位 此例中新增了一个概念:变量 起始部分 BEGIN {size=0;} ,定义了一个变量,名为

1.2K80

一天一个 Linux 命令(21):awk 命令

,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开部分再进行各种分析处理; awk其名称得自于它创始人 Alfred Aho 、Peter Weinberger Brian...简单来说awk就是把文件逐行读入,以空格为默认分隔符将每行切片,切开部分再进行各种分析处理。...: 打印每行最后一个字段 NR: number of record,文件行数 #example: awk '{print NR}' /etc/passwd: 打印行号,其会个行号都显示 awk...'END{print NR}' /etc/passwd: 显示文本行数,其只是文本处理完成后,只显示一次行号 awk '{print NR}' file1 file2 : 会每把所有文档进行编号...因为/etc/passwd 这个文件shell类型只有两种,即/bin/bash/sbin/nologin。也就是说这个数组就只有两个元素,并且它值是不断被更新

2K20

Linux Shell工具篇 - 文本分析工具awk

简单来说awk就是把文件逐行读入,以空格为默认分隔符将每行切片,切开部分再进行各种分析处理,切开部分使用awk可以定义变量、运算符,使用流程控制语句进行深度加工与分析。...语法 awk [options] 'pattern{action}' {filenames} pattern:表示awk在数据查找内容,就是匹配模式 action:找到匹配内容时所执行一系列命令..../ 1.默认每行空格切割数据 echo "abc 123 456" | awk '{print $1"&"$2"&"$3}' 运行效果 2.打印含有匹配信息行 搜索passwd文件有root...关键字所有行: awk '/root/' passwd # '/root/' 是查找匹配模式, 没有action命令, 默认输出所有符合行数据 运行效果 3.打印匹配行第7列数据 搜索passwd...打印文件每行属性信息 统计passwd:文件名,每行行号每行列数,对应完整行内容: awk -F ':' '{print "文件名:" FILENAME ",行号:" NR ",列数:" NF

1.6K20

sed用法详解

,地址可以表示为文本行号,或者匹配正则表达式 sed -n '2,4p' /etc/hosts 基本处理动作 p 打印 2,4p 2p;4p d 删除 2,4d 删除第234行 s 字符串替换 s...删除每行第二个最后一个字符 sed -i 's/.//2;s/.$//' a.txt 删除每行第二个最后一个单词 sed -r 's/[a-Z]+//2;s/[a-Z]+([^a-Z]*)$/\1.../' a.txt 将文件每行第一个第二个字符互换 sed -r 's/^(.)(.)(.*)/\2\1\3/' a.txt 将文件每行第一个第二个单词互换 sed -r 's/([a-Z]+...r:读取文件 3r b.txt 第3行下方插入文本b.txt 4,7r b.txt 第4-7行每一行后插入文件b.txt w:保存到文件 3w c.txt 将第3行另存为文件c.txt 4,7w...n个字段,如$1,$3分别表示第1,第3列 $0:当前读入整行文本内容 NF:记录当前处理行字段个数,列数 NR:记录当前已读入行数量,行数 FNR:保存当前处理行在原文本内序号,行号 FILENAME

4.2K31

大数据学习之_02_Shell学习

(3)bash,变量默认类型都是字符串类型,无法直接进行数值运算。 (4)变量值如果有空格,需要使用双引号或单引号括起来。...3、案例实操   (1)定义变量A   (2)给变量A重新赋值   (3)撤销变量A   (4)声明静态变量C=4,不能unset   (5)bash,变量默认类型都是字符串类型,无法直接进行数值运算...ni lai  lai le  le 10.3 awk 一个强大文本分析工具,把文件逐行读入,以空格为默认分隔符将每行切片,切开部分再进行分析处理。...5、案例实操 (1)统计passwd文件名,每行行号每行列数 [jack@hadoop datas]$ awk -F : '{print "filename:" FILENAME ", linenumber...file1空行所在行号

1.5K20

【Linux】常用命令之 awk 常用实例

整理:Linux公社 awk命令工具 Linux/UNIX系统,awk是一个功能强大编辑工具,逐行读取输入文本,并根据指定匹配模式进行查找,对符合条件内容进行格式化输出或者过滤处理,可以无交互情况下实现相当复杂文本操作...使用awk命令过程,可以使用逻辑操作符“&&”“||”; 也可以进行简单数学运算,如+ 、-、、/、%、^分别表示加、减、乘、除、取余、乘方。...** awk从输入文件或者标准输入读入信息,与sed一样,信息读入也是逐行读取。不同是,awk命令将文本文件一行视为一个记录,而将一行某一部分(列)作为记录一个字段。.../etc/passwd 9、统计以/bin/bash结尾行数 [linuxmi@linux:~/linuxmi迷]$ grep -c "/bin/bash$" /etc/passwd ?...2、输出每行(以空格分隔)第1个第3个字段 [linuxmi@linux:~/linuxmi迷]$ awk '{print $1,$3}' linuxmi.py ?

2.5K20

Shell四剑客实操案例

逐行处理直到文件末尾,然而如果打印屏幕上,实质文件内容并没有改变,除非你使用重定向存储输出或者写入文件。...#查询不包括xy行号行;r #从另一个文件文件;w #将文本写入到一个文件;y #变换字符;q #第一个模式匹配完成后退出;l #显示与八进制ASCII码等价控制字符; 常用SED工具企业演练案列...,脚本命令逐行进行处理,直到脚本执行完毕,然后该行被输出,模式空间请空;然后重复刚才动作,文件一行被读入,直到文件处理完备。...$0}’ jfedu.txt 打印jfedu.txt文件,长度大于80行号: awk ‘length($0)>80 {print NR}’ jfedu.txt AWK引用Shell变量,使用-...;-n 顺便输出行号; 学习Grep时,需要了解通配符、正则表达式两个概念,很多读者容易把彼此搞混淆,通配符主要用在LinuxShell命令,常用于文件或者文件名称操作,而正则表达式用于文本内容字符串搜索替换

2.1K21

awk学习笔记

awk通过逐行遍历一个或多个 文件方式,查找模式匹配到行,而后以指定分隔符(缺省为空格)进行切片,然后针对切片数据进行处理分析。...事实上,gawk有自己语言,其本身就 相当于一个解释器,允许用户创建简短程序读取输入文件,对输入数据执行排序、计算以及生成报表操作,甚至可以类似bash shell实现诸如循环、数组、条件判断、函数...//awk使用,需要处理文件逐行使用分隔符分割成若干个字段,称之为域,分隔符默认是空格,可使用-F选项来指定分隔符 2、shell脚本模式 将所需执行awk命令插入...(3)、NRFNR 显示/etc/{inittab,passwd}所有内容以及行数 # awk '{print NR,$0}' /etc/{inittab,passwd.../etc/inittab每行奇数字段 ?

1.9K60

快速学习-Shell工具

第10章 Shell工具(重点) 10.1 cut cut工作就是“剪”,具体说就是文件负责剪切数据用。cut 命令从文件每一行剪切字节、字符字段并将这些字节、字符字段输出。...处理时,把当前处理行存储临时缓冲区,称为“模式空间”,接着用sed命令处理缓冲区内容,处理完成后,把缓冲区内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。...$ sed -e '2d' -e 's/wo/ni/g' sed.txt dong shen ni ni lai lai le le 10.3 awk 一个强大文本分析工具,把文件逐行读入...atguigu,/bin/bash dahaige,/bin/zuishuai 注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。...案例实操 (1)统计passwd文件名,每行行号每行列数 [atguigu@hadoop102 datas]$ awk -F: '{print "filename:" FILENAME ",

90210
领券