Bash文件操作

the*_*Fox 3 linux bash

什么是最好的方法(一条线,最好是使用头部和尾部)从文件中提取3-5和11-13行?

这完成了第一部分,但是如何在不弄乱的情况下抓住11-13?的xD

head -5 some_file | tail -3 > output_file
Run Code Online (Sandbox Code Playgroud)

Joh*_*136 8

我认为sed可以轻松做到这一点sed -n -e "3,5p" -e "11,13p" some_file > output_file

-n告诉不sed将输出的每一行.在-e'小号告诉SED哪些部分打印出来.无法看到你如何用头部和尾部做到这一点:head -5只给你前5行,所以你不能只把它管到尾部 - 你需要一个新的命令,所以看一些更复杂的东西,如:

head -5 some_file > output_file; tail -3 some_file >> output_file
Run Code Online (Sandbox Code Playgroud)


Ans*_*ers 6

awk你可以做这样的:

awk '(NR>=3 && NR<=5) || (NR>=11 && NR<=15) {print}' some_file >output_file
Run Code Online (Sandbox Code Playgroud)

Glenn Jackman建议的简化版本:

awk '(NR >= 3 && NR <= 5) || (NR >= 11 && NR <= 15)' some_file >output_file
Run Code Online (Sandbox Code Playgroud)

  • +1.我喜欢它读得更好的方式(保持范围的终点在外面),但它完全相同:`(3 <= NR && NR <= 5)|| (11 <= NR && NR <= 15)`.此外,不需要`{print}`正文,这是默认操作. (2认同)