ヘッダーと尾のみを使用して特定の行を表示する

ヘッダーと尾のみを使用して特定の行を表示する

headandコマンドを使用してファイルの3行と7行のみを表示したいですtail(3行と7行の間の行は表示したくありません)。

答え1

シェルで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最初の3行をインポートし、tail最後の1行のみをインポートするために使用します。次に、head最初の7行とtail最後の1行のみをインポートするために使用します。

実際には、2つのコマンドが区切られており、単一のコマンドである可能性があり;ますが、どうなるかはわかりません。

以下を使用する方が良いかもしれません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

関連情報