如何从文件中获取第n行并将结果保存到变量

时间:2019-03-28 15:02:53

标签: bash shell terminal

因此,我正在bash中创建脚本,并且试图读取保存在同一目录中的文本文件。我需要阅读该文件的nth行,然后将其保存到一个变量中,以便以后使用,但是我不确定该怎么做

下面列出了我目前尝试的内容,但它实际上是从文件中读取该行,将其保存为变量,然后从该文件中删除该行并重复。这是一个hack,虽然可以,但不是我想要的,我无法获取nth value,并且它正在从我绝对不想要的文件中删除。

read -r first<"test.txt"      // reads first line and stores in first
sed -i -e "1d" "test.txt" .   // removes first line
read -r second<"test.txt"     // reads first line and stores in second  
sed -i -e "1d" "test.txt" .   // removes first line

例如,如果我想获得第二行,我已经看过sed '2q;d' file,但不确定如何保存结果/保存在何处。它在终端打印吗?感谢您的任何帮助,谢谢!w

2 个答案:

答案 0 :(得分:1)

sed '2q;d' file

file中的第二行打印到终端。

要使用它填充变量,请使用bash的命令扩展功能:

$ var=$(sed '2q;d' file)
$ echo "$var"
this is second line

答案 1 :(得分:0)

使用headtail的简单解决方案:

a=$(head -2 test.txt | tail -1 )

将test.txt的第二行保存到变量$a中。