我如何阅读两条特定行之间的所有行?
让我们说第23行是我想要开始的地方,第56行是要读取的最后一行,但它不是文件的结尾。
我如何阅读23至56行?我将把它们输出到另一个文件。
答案 0 :(得分:24)
使用awk
awk 'NR >= 23 && NR <= 56'
无论哪种方式,sed
都会让它变得有趣。
sed '23,56!d'
或者对于模式,
sed '/start/,/end/!d'
答案 1 :(得分:6)
我会选择sed,但也可以使用头/尾组合: <击> 撞击>
<击>head -n 56 file | tail -n $((56-23))
击> <击> 撞击>
嗯 - 我很确定里面有一个错误的错误。我会找到它。 :)
head -n 56 file | tail -n $((56-23+1))
答案 2 :(得分:5)
Sed可以做到这一点:
$ sed -n 23,56p yourfile
$ sed -n '23,56p;57q' yourfile
但性能将在很大程度上取决于您正在处理的文件,间隔和许多其他因素。因此,如果您正在开发一些脚本以便在已知数据测试中频繁运行,那么答案中提到的所有三种方法(sed,awk,head-tail)都是个好主意。
答案 3 :(得分:3)
使用sed。这应该做到这一点。
sed -n '23,56p' > out.txt
答案 4 :(得分:0)
这可能对您有用:
sed '1,22d;56q' file
或者这个:
sed '23,56!d;56q' file
或者这个:
awk 'NR>56{exit};NR==23,NR==56' file