打印任何UNIX文件的中间行

时间:2014-11-13 02:34:08

标签: file unix text printing line

我必须打印任何文本文件的中间行而不使用sed或awk。

例如,以下file.txt:

line 1
line 2
line 3
line 4
line 5

我需要类似的东西:

$ command -flags file.txt
line 3

有没有命令?

感谢。

2 个答案:

答案 0 :(得分:3)

不是最有效的,但在bash中工作。

使用wc -l计算行数,然后除以2。然后使用tail -n +N | head -n 1仅打印N行(N从1开始)。

$ cat input.txt
A
B
C
D
E
$ tail -n +$(((`cat input.txt | wc -l` / 2) + 1)) input.txt | head -n 1
C

请注意,具有偶数行的文件没有单个“中间行”。

cat - 将文件编辑为wc -l,因此无法打印文件名。

答案 1 :(得分:1)

sed -n $(((`cat input.txt| wc -l`/ 2) + 1))p input.txt