假设我有一个名为" demo.txt"的文本文件。看起来像这样:
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 :(得分:11)
使用head
和tail
$ 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
命令以打印当前模式空间
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提出的建议。