あなたはできます...

あなたはできます...

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、、、zshksh)。

簡単です。次のことを試すことができます。

$ printf '%sp\n' $(shuf -i 1-100 -n 10 | sort -n) > /tmp/short.sed
$ sed -n -f /tmp/short.sed < orig.txt > short.txt

おすすめ記事