100行の長さのファイルからランダムに10行を抽出したいと思います。まず、1から100(含む)の間の整数10個をランダムに生成します。
ind=$(shuf -i 1-100 -n 10 | sort -n)
sed
その後、この行(で示されている)を抽出しようとしますind
。そのため、ind
作成するには配列を再印刷する必要があります。
<ind(1)>p;<ind(2)>p;...;<ind(10)>p
良い
sed -n '<ind(1)>p;<ind(2)>p;...;<ind(10)>p' ~/orig.txt > ~/short.txt
どうすればいいですか?
ベストアンサー1
あなたの例では、ind
配列ではなく文字列です。以下を使用する必要があります。
ind=($(shuf -i 1-100 -n 10 | sort -n))
配列で作成しますind
(配列はシェルでサポートされています(たとえばbash
、、、zsh
)ksh
)。
簡単です。次のことを試すことができます。
$ printf '%sp\n' $(shuf -i 1-100 -n 10 | sort -n) > /tmp/short.sed
$ sed -n -f /tmp/short.sed < orig.txt > short.txt