我必须打印任何文本文件的中间行而不使用sed或awk。
例如,以下file.txt:
line 1
line 2
line 3
line 4
line 5
我需要类似的东西:
$ command -flags file.txt
line 3
有没有命令?
感谢。
答案 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