shell 读取文件指定单行 多行 连续行 倒数几行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 读取文件指定单行 多行 连续行 倒数几行相关的知识,希望对你有一定的参考价值。

参考技术A

三种方法

1、tail -n +/-数字 文件名

2、head -n 数字 文件名

3、sed -n "开始行,结束行p" 文件名

下面分别介绍这几种方法

cd 到要文件所在目录。cd到要查看指定行数内容的文件所在目录,本文以SpecialVariable.sh文件为例 cd /home/test/shell/ 如下图

tail -n +/-数字 文件名

tail -n -数字 文件名,表示查看文件的最后几行,比如查看SpecialVariable.sh的最后5行,

如下图

tail -n +数字 文件名

tail -n +数字 文件名,表示查看文件的某一行到最后一行,比如查看SpecialVariable.sh的第3行到最后一行

如下图

head -n 数字 文件名,表示查看文件前几行的内容,比如查看SpecialVariable.sh的前3行内容,

如下图

读取文件列表倒数2行

sed -n "开始行,结束行p" 文件名,表示查看文件的开始行到结束行的内容,

如下图

接分号,表示打印特定行,如下命令只会打印出第一行与第十行

接逗号,表达连续的行娄,如下命令打印出第一行到第十行

如下命令打印1~5行与第9行.

Python 读取指定行数

b=1
c=2
F = ('n'.join(open('C:\\Users\\Administrator\\Desktop\\ID.txt','r').readlines()[str(b):str(c)]))
运行结果报错
NameError: name 'b' is not defined
怎样才能将变量代入,不会出错
运行结果报这个:TypeError: slice indices must be integers or None or have an __index__ method

F = ('n'.join(open('C:\\\\Users\\\\Administrator\\\\Desktop\\\\ID.txt','r', encoding='gbk').readlines()[b:c]))

追问

请问encoding='gbk'这个是什么意思?

追答

使用gbk编码打开你的txt文件,如果你的txt文件编码是utf-8的,那么这里就需要修改为utf-8

追问

F = ('n'.join(open('C:\\Users\\Administrator\\Desktop\\ID.txt','r', encoding='utf-8').readlines()[b:c]))
TypeError: 'encoding' is an invalid keyword argument for this function
还是报错了

参考技术A 不用str(b),直接[b:c]追问

直接写b和c 也报错了
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe0 in position 0: unexpected end of data

追答

试试open('C:\\Users\\Administrator\\Desktop\\ID.txt','r').readlines().decode('gbk')

追问

我的变量怎么带进去?

追答

open('C:\\Users\\Administrator\\Desktop\\ID.txt','r').readlines().decode('gbk')[b:c]

追问

额 还是有错AttributeError: 'list' object has no attribute 'decode'有没有联系方式私信一下吧

以上是关于shell 读取文件指定单行 多行 连续行 倒数几行的主要内容,如果未能解决你的问题,请参考以下文章

shell 打印指定行倒数几行

shell 打印指定行倒数几行(超清晰)

多行shell脚本如何执行?

Shell | shell脚本单行注释与多行注释用法

Gnu make学习笔记

Ansible模块lineinfile替换指定行内容多行replace及j2的shell/yaml