Bash脚本:将除了前三行stdin之外的所有内容写入文件

时间:2015-12-23 14:01:14

标签: bash output-redirect

我正在编写一个bash脚本,它一度使用nslookup来解析循环中的某些名称。它的输出看起来像这样:

Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   example.org
Address: 93.184.216.34

我想删除前三行,而不必先将输出写入文件。我尝试使用tail,但无法从STDIN中读取它。

nslookup "${name}" \
    | tail +2 -

这会尝试将+2读作文件:tail: cannot open ‘+2’ for reading: No such file or directory

如何管道nslookup的输出以删除前三行,以便稍后将所有行写入文件,如下所示:

while read name; do
    nslookup "${name}" \
        | remove-three-lines \
        >> file.out
done <"${nameFile}"

2 个答案:

答案 0 :(得分:3)

从第4行开始输出(忽略前3行):

nslookup "${name}" | tail -n +4

或者awk:

nslookup "${name}" | awk 'NR>3'

或sed:

nslookup "${name}" | sed '1,3d'

答案 1 :(得分:0)

这个怎么样:

while read name; do
    echo $(nslookup "${name}" | tail -2) >> file.out
done <"${nameFile}"