2014-11-21 103 views
1

说我有所谓的“demo.txt”的文本文件谁是这样的:如何从bash中的文本文件读取第n行?

1 2 3 4 
5 6 7 8 
9 10 11 12 
13 14 15 16 

现在我想读某行,说行2,用一个命令,这将是这个样子:

Line2 = read 2 "demo.txt" 

所以,当我会打印:

echo "$Line2" 

我会得到:

5 6 7 8 

我知道如何使用'sed'命令来打印文件中的第n行,但不知道如何读取它。我也知道'阅读'命令,但不知道如何使用它以确定某一行。

在此先感谢您的帮助。

+0

[bash工具从文件中获得第n行]的可能重复(http://stackoverflow.com/questions/6022384/bash-tool-to-get-nth-line-from-a-file) – tripleee 2014-11-21 11:05:36

回答

5

使用headtail

$ head -2 inputFile | tail -1 
5 6 7 8 

OR

的通用版本

$ line=2 
$ head -"$line" input | tail -1 
5 6 7 8 

使用sed的

$ sed -n '2 p' input 
5 6 7 8 
$ sed -n "$line p" input 
5 6 7 8 

它做什么?

  • -n抑制的模式空间正常打印。

  • '2 p'指定的行号,2或($line用于更一般的),p命令打印当前patternspace

  • input输入文件

编辑

要使用一些命令替换技术将输出获取到某个变量疑问句。

$ content=`sed -n "$line p" input` 
$ echo $content 
5 6 7 8 

OR

$ content=$(sed -n "$line p" input) 
$ echo $content 
5 6 7 8 

获得输出到一个bash阵列

$ content= ($(sed -n "$line p" input)) 
$ echo ${content[0]} 
5 
$ echo ${content[1]} 
6 

用awk

也许一个awk解决方案可能看起来像

$ awk -v line=$line 'NR==line' input 
5 6 7 8 

感谢Fredrik Pihl的建议。

+0

是....但我如何把它放在一个变量? – user3206874 2014-11-21 08:25:06

+0

你需要输出到变量? – nu11p01n73R 2014-11-21 08:27:44

+0

@ user3206874我编辑了答案,包括这个以及 – nu11p01n73R 2014-11-21 08:30:04