2014-11-21 106 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