E.g。
文件a.txt
具有以下上下文
aaa
bbb
ccc
ddd
eee
可以实现此目标的脚本是什么,例如
script.sh a.txt 2 4
输出:
bbb
ccc
ddd
其中2和4是指定的行号。
答案 0 :(得分:6)
您可以使用awk
:
awk 'NR>=2 && NR<=4' file
一般来说,
awk -v beginning=$first -v end=$last 'NR>=beginning && NR<=end' $file
因此,您需要在脚本中阅读$file
,$first
和$last
。
基于doubleDown comment(谢谢!),也可以这样做:
awk 'NR==2, NR==4' file
更一般:
awk -v beginning=$first -v end=$last 'NR==beginning, NR==end' $file
答案 1 :(得分:5)
sed
是一个处理这个问题的原始工具:
sed -n '2,4p' file # method 1
sed '2,4!d' file # method 2
见sed1line.txt; sed
单行的绝佳资源。
答案 2 :(得分:3)
最简洁的方法是使用sed
:
$ sed '2,4!d' file
bbb
ccc
ddd
答案 3 :(得分:0)
最好的选择是使用上面提到的awk或sed。 如果你只想使用传统的工具,你可以制作这样的技巧(其中$ FILE是a.txt):
#!/bin/env bash
FILE=a.txt
SIZE=`wc -l $FILE`
let STARTPOS=$SIZE-$1
let OFFSET=$2-$1
cat $FILE | tail -n $STARTPOS | head -n $OFFSET