有没有办法打印特定的行(不使用模式匹配),就像我们用来打印列($ 1,$ 2,$ 3等)?
我的文字档案:
Hi
How are you?
I am from California.
是否有任何特殊字符可以实现这一目标,如$ 1,$ 2,$ 3等......?
答案 0 :(得分:3)
使用sed:
~$ sed -n '3p' myfile
I am from California.
使用awk
~$ awk 'NR==3' myfile
I am from California.
如果文件很大,则应在找到该行时退出:
使用sed:
~$ sed -n '3{p;q}' myfile
I am from California.
使用awk
~$ awk 'NR==3{print;exit}' myfile
I am from California.
答案 1 :(得分:2)
就个人而言,我会使用sed或awk来做这个,但是如果你想使用python,你可以这样做:
with open('file') as f:
for i, l in enumerate(f):
if i == 2:
print l.rstrip()
break
虽然稍长,但这种方法有一些优点。首先,整个文件不会开始读入内存(如readlines()
的情况)。其次,一旦读取了所需的行,就会终止循环,而不是继续到文件的末尾。
我使用.rstrip()
从行中删除尾随空格字符,包括换行符。感谢Avinash指出了这一点。
我首选的选择是以下列方式使用awk:
awk 'NR==2{print;exit}' file
当记录(行)编号为2时执行该块,因此打印第二行然后退出。
答案 2 :(得分:1)
f=open("file.txt",'r')
print f.readlines()[<any number you want>]