CSVからランダムな行を取得し、その行から5を引いた値を出力するコマンドを作成しようとしています。たとえば、行50を出力すると、両方を含めて46から50まで出力するはずです。これは2つのステップで実現できますが、「xargs」を使用して行番号を次のコマンド(head -n)に渡そうとすると、次のようなエラーが発生しました"head: invalid number of lines: ‘{}’"
。私のコマンドは:
cat test.csv | awk '{ print NR }' | shuf -n 1 | xargs -l head -n "{}" test.csv | tail -n 5
関数"xargs -l head -n "{}" test.csv"
から数値を収集し"shuf"
、最後の5行を取得するために5にテールする必要がある場所。
私は何が間違っているのですか?
ありがとうございました
xargsのmanページから引用するには:
-私は交換します-str
initial-argumentsのreplace-strの出現を、標準入力から読み取られた名前に置き換えます。また、引用符で囲まれていない空白は入力項目を終了しません。代わりに、区切り文字は改行文字です。-xおよび-L1を意味します。
ご覧のとおり、コマンドの置換文字列を指定するには、-Iフラグが必要です。
指定された文字列がない場合、xargsは各行の値をコマンドの最後に追加するだけです。したがって、以下が機能するはずです。
cat test.csv | awk '{ print NR }' | shuf -n 1 | xargs -I {} head -n "{}" test.csv | tail -n 5
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加