我如何阅读两条特定线之间的所有线?
让我们说第23行是我要开始的地方,而第56行是要读取的最后一行,但它不是文件的结尾.
我如何阅读23至56行?我将把它们输出到另一个文件.
Kev*_*vin 26
通过这样的行号非常容易awk:
awk 'NR >= 23 && NR <= 56'
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,sed都会让它变得有趣.
sed '23,56!d'
Run Code Online (Sandbox Code Playgroud)
或者对于一个模式,
sed '/start/,/end/!d'
Run Code Online (Sandbox Code Playgroud)
Sed可以这样做:
$ sed -n 23,56p yourfile
编辑:正如评论者指出,在间隔的最后一行之后进行sed停止处理将使sed的执行速度与头尾组合一样快.因此获得线路的最佳方式是
$ sed -n '23,56p;57q' yourfile
但性能将在很大程度上取决于您正在处理的文件,间隔和许多其他因素.因此,如果您正在开发一些脚本以便在已知数据测试中频繁运行,那么答案中提到的所有三种方法(sed,awk,head-tail)都是个好主意.
我会选择sed,但头尾组合也是可能的:
head -n 56 file | tail -n $((56-23))
Run Code Online (Sandbox Code Playgroud)
好吧 - 我很确定里面有一个错误的错误.我要找到它.:)
哈哈 - 知道你的错误,我找到了:
head -n 56 file | tail -n $((56-23+1))
Run Code Online (Sandbox Code Playgroud)