脚本:仅复制两个指定行之间的部分

Jac*_*kWM 0 vim bash awk

例如

文件a.txt具有以下上下文

aaa
bbb
ccc
ddd
eee 
Run Code Online (Sandbox Code Playgroud)

什么是可以实现这一目标的脚本,如此

script.sh a.txt 2 4

输出:

bbb
ccc
ddd
Run Code Online (Sandbox Code Playgroud)

其中2和4是指定的行号.

fed*_*qui 6

你可以使用awk这个:

awk 'NR>=2 && NR<=4' file
Run Code Online (Sandbox Code Playgroud)

一般来说,

awk -v beginning=$first -v end=$last 'NR>=beginning && NR<=end' $file
Run Code Online (Sandbox Code Playgroud)

所以它的阅读问题$file,$first$last在你的脚本.


更新:

基于doubleDown评论(谢谢!),它也可以这样做:

awk 'NR==2, NR==4' file
Run Code Online (Sandbox Code Playgroud)

更一般的:

awk -v beginning=$first -v end=$last 'NR==beginning, NR==end' $file
Run Code Online (Sandbox Code Playgroud)


Ing*_*kat 5

sed 是一个处理这个问题的原始工具:

sed -n '2,4p' file          # method 1
sed '2,4!d' file            # method 2
Run Code Online (Sandbox Code Playgroud)

sed1line.txt ; sed单行的重要资源.