仅使用头部和尾部显示特定线条

仅使用头部和尾部显示特定线条

head我想仅使用命令和来显示文件中的第 3 行和第 7 行tail(我不想显示第 3 行和第 7 行之间的行)。

答案1

在 shell 中使用 MULTIOS 工具zsh

$ head -n 7 file | tail -n 5 > >( head -n 1 ) > >( tail -n 1 )
line 3
line 7

也就是说,使用 提取第 3 行到第 7 行head -n 7 file | tail -n 5,然后获取其中的第一行和最后一行。

在 中bash,这相当于

$ head -n 7 file | tail -n 5 | tee >( head -n 1 ) | tail -n 1 
line 3
line 7

它还用于tee复制数据。

答案2

head -n3 input | tail -n1; head -n7 input | tail -n1

使用head获取前三行,然后tail仅获取最后 1 行。然后使用head获取前七行,tail仅获取最后 1 行。

请注意,实际上是两个由 分隔的命令;,它可能在单个命令中,但我不确定如何。

使用sed可能会更好:

sed -n '3p;7p' input

如果需要是单个命令,请创建自己的命令(函数):

get_lines () {
    local input=$1
    shift
    for line; do
        head -n "$line" "$input" | tail -n 1
    done
}

你可以这样称呼它:

$ get_lines input 3 7
This is line 3
This is line 7

input你的文件名在哪里。这也将接受您想要的任意数量的行号:

$ get_lines input 1 3 5 7 9
This is line 1
This is line 3
This is line 5
This is line 7
This is line 9

相关内容