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

在bash中将除第一行和最后一行以外的所有内容读取到字符串中

在bash中,可以使用以下命令将除第一行和最后一行以外的所有内容读取到字符串中:

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

# 读取文件内容到数组
mapfile -t lines < 文件名

# 获取数组长度
length=${#lines[@]}

# 初始化字符串
content=""

# 遍历数组,拼接除第一行和最后一行以外的内容
for ((i=1; i<length-1; i++)); do
    content+="${lines[i]}"
done

# 打印结果
echo "$content"

以上脚本将文件中的内容读取到一个数组中,然后遍历数组,将除第一行和最后一行以外的内容拼接到一个字符串中。最后,打印该字符串。

这种方法适用于读取文本文件的内容,并将其处理为一个字符串。在实际应用中,可以根据需要对字符串进行进一步的处理和操作。

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

  • 腾讯云对象存储(COS):提供高可靠、低成本的云端存储服务,适用于存储和处理大规模非结构化数据。详情请参考:腾讯云对象存储(COS)
  • 腾讯云云服务器(CVM):提供弹性、安全、稳定的云服务器,支持多种操作系统和应用场景。详情请参考:腾讯云云服务器(CVM)
  • 腾讯云容器服务(TKE):提供高度可扩展的容器化应用管理平台,支持容器部署、弹性伸缩、自动化运维等功能。详情请参考:腾讯云容器服务(TKE)
  • 腾讯云云数据库 MySQL 版(TencentDB for MySQL):提供高性能、高可靠的云数据库服务,适用于各种规模的应用场景。详情请参考:腾讯云云数据库 MySQL 版(TencentDB for MySQL)
  • 腾讯云人工智能(AI):提供丰富的人工智能服务和解决方案,包括图像识别、语音识别、自然语言处理等。详情请参考:腾讯云人工智能(AI)
  • 腾讯云物联网(IoT):提供全面的物联网解决方案,包括设备接入、数据管理、应用开发等功能。详情请参考:腾讯云物联网(IoT)
  • 腾讯云移动开发(Mobile):提供全面的移动应用开发和运营解决方案,包括移动后端云服务、移动应用分发等。详情请参考:腾讯云移动开发(Mobile)
  • 腾讯云云存储(Cloud Storage):提供安全、可靠的云端存储服务,适用于各种数据存储和备份需求。详情请参考:腾讯云云存储(Cloud Storage)
  • 腾讯云区块链(Blockchain):提供高性能、可扩展的区块链服务,支持企业级应用场景和解决方案。详情请参考:腾讯云区块链(Blockchain)
  • 腾讯云元宇宙(Metaverse):提供虚拟现实(VR)和增强现实(AR)技术支持,构建沉浸式的虚拟世界和交互体验。详情请参考:腾讯云元宇宙(Metaverse)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

带有实际示例Linux Cut命令

cut命令用于LinuxUnix系统,从文件一行剪切字节、字符字段并将这些字节、字符字段写至标准输出。...在这里,我们使用冒号(:)分隔符从文件“ / etc / passwd”中提取第一第六字段,文件包含字符串“ / bin / bash”: $ grep "/bin/bash" /etc/passwd...此选项用于何处选择指定字段以外所有字段。...在下面的示例命令,将输出'/ etc / passwd'文件第二个字段以外所有字段: $ grep "/bin/bash" /etc/passwd | cut -d':' --complement...要从名为content.txt文件一行输出第一个字符,请使用以下命令: $ cut -c 1 content.txt U M O U F 在下面的示例,我们将显示文件每行字符1至7(范围):

3.5K20

linux基本命令及使用方法

-u 搜索默认路径下可执行文件、源代码文件、帮助文件以外其它文件。                    -B 指定搜索可执行文件路径。                   ...#:  显示最近# 条历史                    -a:  追加本次会话新执行命令历史列表至历史文件                    -n:  历史文件未读过到历史列表...展开历史参数成多个,但不存在历史列表                    -s:  展开历史参数成一行,附加在历史列表后 命令历史相关变量:           HISTSIZE :命令历史记录条数...:调用上一个命令中最后一个参数          !$:调用上一个命令中最后一个参数          !^:调用上一个命令第一个参数     !...,位于管道符号左侧命令输出结果,将作为右侧命令输入(处理对象),同一行命令可以使用多个管道。

1K30

linux实战(一)

处理时,把当前处理存储临时缓冲区,称为“模式空间”(pattern space),接着用sed命令处理缓冲区内容,处理完成后,把缓冲区内容送往屏幕。...一般 sed 用法所有来自 STDIN 数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理一行(或者动作)才会被列出来。...匹配换行符以外单个字符  /m..y/  匹配包含字母m,后跟两个任意字符,再跟字母y  * 匹配零个或多个前导字符  /my*/  匹配包含字母m,后跟零个或多个y字母  []   匹配指定字符组内任一字符...保持获取h命令G命令 $ sed -e '/test/h' -e '$G example sed处理文件时候,每一行都被保存在一个叫模式空间临时缓冲区,除非行被删除或者输出被取消,否则所有被处理行都将打印屏幕上...name,shell,最后一行添加"blue,/bin/nosh"。

2.2K10

Shell三大利器之sed

sed (stream editor)流编辑器也是linux一条命令,shell中经常需要用到非交互式修改文件内容命令。sed处理文本是按处理,也就是一行处理一行。...多行时最后一行外,每行末尾需用“\”续 b lable 分支到脚本带有标记地方,如果分支不存在则分支到脚本末尾。 c 用此符号后新文本替换当前行文本。...多行时最后一行外,每行末尾需用"\"续 i 在当前行之前插入文本。...多行时最后一行外,每行末尾需用"\"续 d 从模板块(Pattern space)位置删除 D 删除模板第一行 i 在当前行上面插入文本。...q 结束或退出sed r 从文件读取输入行 ! 对所选以外所有应用命令 s 用一个字符串替换另一个 如s/re/string,用string替换正则表达式re。

2.1K00

Shell实用工具

覆盖方式) G 将暂存空间里面的内容复制到模式空间缓存区(追加方式) x 交换2个空间内容 示例: 缓存空间数据交换 演示1: 第一行粘贴到最后1 将模式空间第一行复制到暂存空间(覆盖方式),并将暂存空间内容复制到模式空间中最后一行...(追加方式) sed '1h;$G' sed.txt # 1h 从模式空间中将第一行数据复制到暂存空间(覆盖方式) # $G 将暂存空间中内容复制到模式空间中最后一行(追加方式) ?...演示2: 第一行删除后粘贴到最后1 将模式空间第一行复制到暂存空间(覆盖方式)并删除, 最后将暂存空间内容复制到模式空间中最后一行(追加方式) sed '1{h;d};$G' sed.txt #...1{h;d}对模式空间中第一行数据同时进行复制到暂存空间(覆盖方式)删除模式空间中第一行数据 ?...演示3: 第一行数据复制粘贴替换其他行数据 将模式空间第一行复制到暂存空间(覆盖方式), 最后将暂存空间内容复制到模式空间中替换从第2开始到最后一行一行数据(覆盖方式) sed '1h;2,$g

7.8K10

一篇文章学会shell工具篇之sed

sed叫做流编辑器,shell脚本Makefile作为过滤器使用非常普遍,也就是把前一个程序输出引入sed输入,经过一系列编辑命令转换成为另一种格式输出。...,将该行第一个匹配pattern1字符串替换为pattern2 /pattern/s/pattern1/pattern2/g:查找符合pattern,将该行所有匹配pattern1...d:删除模式空间所有,并一行到模式空间。 D:删除模式空间第一行,不读下一行到模式空间。... 例1:给每行后面添加一行空行 例2:用sed模拟倒序(tac)打印过程 例3.追加匹配到文件末尾 例4:将一列内容变为一行 例5:求出1-100求和 例6:打印输出奇数偶数...:匹配换行符以外单个字符 /m..y/ 匹配包含字母m,后跟两个任意字符,再跟字母y; *:匹配零个或多个前导字符 /test*/ 匹配包含字符串 tes

95670

Linux sed命令详解

处理时,把当前处理存储临时缓冲区,称为”模式空间”( oattern space),接着用sed命令处理缓冲区内容,处理成后,把缓冲区内容送往屏幕显示。...多行时最后一行外,每行末尾需用“\”续 c\ 用此符号后新文本替换当前行文本。多行时最后一行外,每行末尾需用"\"续 i\ 在当前行之前插入文本。...多行时最后一行外,每行末尾需用"\"续 d 删除 h 把模式空间里内容复制到暂存缓冲区 H 把模式空间里内容追加到暂存缓冲区 g 把暂存缓冲区里内容复制到模式空间,覆盖原有的内容...对所选以外所有应用命令 s 用一个字符串替换另一个 g 在行内进行全局替换 w 将所选写入文件 x 交换暂存缓冲区与模式空间内容 y 将字符替换为另一字符(不能对正则表达式使用...文件第一行第四每行下面添加hahaha sed '1,4i hahaha' yum.log ?

4.9K20

Linux云计算运维之Shell

-f 脚本文件名 :从sed脚本读入sed操作,awk命令-f非常类似, -r sed修改结果直接修改读取数据文件,而不是由屏幕输出 动作 : a : 追加,在当前行后添加一行或多行...添加多行时,最后一行外,每行末尾需要用“\”代表数据未完结。 c : 替换,用c后面的字符串替换原数据,替换多行时,最后一行外,每行末尾需用“\”代表数据未完结。...i : 插入,在当期行前插入一行或多行。插入多行时,最后一行外,每行末尾需要用“\”代表数据未完结。 d : 删除,删除指定。 p :打印,输出指定。...格式为“范围 s/ 旧字串/新字串/g“ (vim替换格式类似) 对sed命令要注意,sed所做修改并不会直接改变文件内容(如果是用管道符接收命令输出,这种情况连文件都没有),而是把修改结果只是显示到屏幕上...“-k 3”,代表从第三字段到行尾都排序(第一个字符先排序,如果一致,第二个字符再排序,直到行尾) uniq unid命令是用来取消重复命令,其实“sort -u”选项是一样

5.6K30

linux学习第二十六篇:正则介绍,grep,sed,awk命令

正则表达式是这样解释:它是指一个用来描述或者匹配一系列符合某个句法规则字符串单个字符串很多文本编辑器或其他工具里,正则表达式通常被用来检索/或替换那些符合某个模式文本内容。...把test.txt中出现第一个数字最后一个单词替换位置 ? 12. 把test.txt 第一个数字移动到末尾 ? 13....test.txt 20到末行最前面加 ‘aaa:’ ? awk命令 上面也提到了awksed一样是流式编辑器,它也是针对文档来操作一行一行去执行。...: sed ‘s/[A-Z]/\l&/g’ filename sed文件一行最后添加一个数字 ?...NR=FNR表示第一个文件,比如读到第一行NR=1,FNR也=1,也就是说第一个文件时候NR始终是等于FNR,直到第二个文件第一行时候NR是等于5,而此时NFR=1,所以NR>NFR

3.8K60

shell脚本快速入门之-----正则三剑客之二sed用法大全!!!

sed 工作流程主要包括读取、执行显示三个过程。 读取:sed 从输入流(文件、管道、标准输入)读取一行内容并存储到临时缓冲区(又称模式空间,pattern space)。...5 2、n表示不读取 [root@localhost ~]# sed -n 'p;n' test.txt //输出所有奇数,n 表示读入下一行资料 也就是第一行p正常输出 第二之所以不显示...n直接读取下一行 就直接第三了 [root@localhost ~]# sed -n 'n;p' test.txt //输出所有偶数,n 表示读入下一行资料 [root@localhost ~]...其效果与“cat -s test.txt”相同,n 表示一行数据。...w模式下,可以直接写入文件,这是追加过程,不会覆盖原文 三、sed-n-p以及不加参数 不加参数默认输出全部 包括匹配到参数 -n选项:只显示匹配处理(否则会输出所有)(也就是关闭默认输出

1.5K30

文本处理三剑客之—awk

、END语句块,共3部分组成 分割符、域记录 awk执行时,由分隔符分隔字段(域)标记1,2..n称为域标识,0为所有域,注意:shell变量符含义不同,文件一行称为记录,省略action,...第一步:执行BEGIN{action;… }语句块语句 第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ action;… }语句块,它逐行扫描文件,从第一行最后一行重复这个过程...第三步:当至输入流末尾时,执行END{action;…}语句块BEGIN语句块awk开始从输入流读取之前被执行,这是一个可选语句块,比如变量初始化、打印输出表格表头等语句通常可以写在BEGIN...语句块 END语句块awk从输入流读取完所有之后即被执行,比如打印所有分析结果这类信息汇总都是END语句块完成,它也是一个可选语句块,pattern语句块通用命令是最重要部分,...如果没有提供pattern语句块,则默认执行{ print },即打印每一个读取到,awk读取一行都会执行该语句块。

1.1K30

Linux常用命令03 - grep

run the following command: 例如,要显示/etc/passwd 文件包含字符串 bash 所有,可以运行以下命令: grep bash /etc/passwd 输出应该是这样...: grep -R chasays.github.io /etc 注意下面输出最后一行。...zebra zebra's zebras 搜索全文 搜索字符串时,grep 将显示字符串嵌入较大字符串所有。...例如,要显示/etc/services 文件包含以匹配行号作为前缀字符串 bash ,可以使用以下命令: grep -n 10000 /etc/services 下面的输出显示匹配项第10423...例如,要匹配以 kan 开头,然后有两个字符字符串 roo 结尾任何内容,您可以使用以下模式: grep "kan..roo" file.txt 使用匹配括方括号任何单个字符。

2K20

Linux:sed命令详解

sed 每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理显示。处理完输入文件最后一行后,sed 便结束运行。...3.1 sed 命令 命令 功                能 a\ 在当前行后添加一行或多行。多行时最后一行外,每行末尾需用“\”续 c\ 用此符号后新文本替换当前行文本。...多行时最后一行外,每行末尾需用"\"续 d 删除 h 把模式空间里内容复制到暂存缓冲区 H 把模式空间里内容追加到暂存缓冲区 g 把暂存缓冲区里内容复制到模式空间,覆盖原有的内容 G 把暂存缓冲区内容追加到模式空间里...对所选以外所有应用命令 s 用一个字符串替换另一个 g 在行内进行全局替换 w 将所选写入文件 x 交换暂存缓冲区与模式空间内容 y 将字符替换为另一字符(不能对正则表达式使用 y 命令...如果在一行中有多个命令,要用分号分隔。执行脚本时,sed 先将输入文件第一行复制到模式缓冲区,然后对其执行脚本中所有的命令。

7K60

Linux如何通过命令查看日志文件某几行(中间几行或最后几行)「建议收藏」

sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理显示。处理完输入文件最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区,对这个副本进行编辑,所以不会修改原文件。...3.1 sed命令 命令 功能 a\ 在当前行后添加一行或多行。多行时最后一行外,每行末尾需用“\”续 c\ 用此符号后新文本替换当前行文本。...多行时最后一行外,每行末尾需用”\”续 i\ 在当前行之前插入文本。...多行时最后一行外,每行末尾需用”\”续 d 删除 h 把模式空间里内容复制到暂存缓冲区 H 把模式空间里内容追加到暂存缓冲区 g 把暂存缓冲区里内容复制到模式空间,覆盖原有的内容...对所选以外所有应用命令 s 用一个字符串替换另一个 g 在行内进行全局替换 w 将所选写入文件 x 交换暂存缓冲区与模式空间内容 y 将字符替换为另一字符(不能对正则表达式使用

9.5K60

字符串最后一个单词长度

题目描述 计算字符串最后一个单词长度,单词以空格隔开。 输入描述: 输入一行,代表要计算字符串,非空,长度小于5000。 输出描述: 输出一个整数,表示输入字符串最后一个单词长度。...示例1 输入 hello nowcoder 输出 8 解法: scanf()函数,如果转换说明是%s的话,他读取规则是,“读取空白以外所有字符串”。...scanf()函数跳过空白开始读取第一个非空白字符,并保存非空白字符直到再次遇到空白字符。也就是说!!!!scanf()函数根据%s转换说明读取一个单词!!!...EOF,EOF是stdio.h文件里定义特殊值,通常情况下#define指令会把EOF定义为“-1”,当scanf()读取到文件结尾时,就会返回EOF(如果是转换说明错误好像是会返回“0”) #include

58120

linux基础命令介绍八:文本分析 awk

对于每条记录,awk使用分隔符将其分割成列,第一列用$1表示,第二列用$2表示...最后一列用$NF表示 选项-F表示指定分隔符 如输出文件/etc/passwd第一行第一列(用户名)最后一列(登录shell...以上所说NR、NF等都是awk内建变量,下面列出部分常用内置变量 $0 当前记录(这个变量存放着整个内容) $1~$n 当前记录第n个字段,字段间由FS分隔 FS...:BEGINEND;它们不会对输入文本进行匹配,BEGIN对应action部分组合成一个代码块,在任何输入开始之前执行;END对应action部分组合成一个代码块,在所有输入处理完成之后执行。...[root@centos7 temp]# getline从输入(可以是管道、另一个文件或当前文件一行)获得记录,赋值给变量或重置某些环境变量 #从shell命令date通过管道获得当前小时数...类似,也是读取下一行并覆盖$0,区别是next执行后,其后命令不再执行,而是读取下一行从头再执行。

1.3K20
领券