head
andコマンドを使用してファイルの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