我找到了一个很好的实用程序脚本,可以从所需的起始行有效地输出所需数量的行。我把它命名为mid.bak,它基于这里的帖子>> http://www.fastechws.com/tricks/unix/head_tail_mid_files.php
用法:mid.bak startline numlines filename
$ cat mid.bak
#!/bin/sh
echo "Positional parameter count: $#"
tail -n +$1 $3 | head -n $2
echo "Parameter three is: $3"
案例I:按照上面列出的正常用法,找到位置参数“$ 3”。
$ mid.bak 3 2 file.txt
Positional parameter count: 3
This line 3 in file.txt
This line 4 in file.txt
Parameter three is: file.txt
案例II& III:“3美元”神秘地缺席。
$ mid.bak 3 2 < file.txt
Positional parameter count: 2
This line 3 in file.txt
This line 4 in file.txt
Parameter three is:
$ cat file.txt | mid.bak 3 2
Positional parameter count: 2
This line 3 in file.txt
This line 4 in file.txt
Parameter three is:
我的问题:对于案例I,正常的$ 1,$ 2 ..参考文件可以使用上面的位置参数3美元。那么为什么它不包括在计数“$#”&amp;没有回应II和&amp; III?
答案 0 :(得分:3)
如果是I,则文件名是第3个参数。在案例II和III中,没有第3个参数,因此$3
扩展为空字符串,并且由于未引用,将从传递给tail
的参数列表中删除。 tail
,未在其参数列表中接收文件名,而是从标准输入读取,标准输入通过案例II中的file.txt
运算符连接到<
,并输出到{{1}在案例III中通过管道。