awk
を使用してレコードを行ごとに解析し(max要素までループします(NF
まで)、bash
変数にいくつかのフィールドを保存します。私は必要なレコードを手に入れることができましたが、回避することはできませんawk
stdout
への出力は です。awkに標準出力への出力を抑制する必要があります
これは私が採用した例です。
newvar=$(echo "Hello, this is a sentence with a few words." | awk '{ s = ""; for (i = 0; i <= 5; i++) s = s $i " "; print s }'
私はbashの変数newvar
の単語Hello, this is a sentence
を保存したかったです。これを行うより効率的な方法がありますが、現時点ではawk
とのやり方を検討してください。
これは
、$ newvar=$(echo "Hello, this is a sentence with a few words." | awk '{ s = ""; for (i = 0; i <= 5; i++) s = s $i " "; print s }' 1>&-)
が言って醜いエラーを得た、と私は1>&-
をすることによってnull
にstdout
を抑制しようとした変数
Hello, this is a sentence with a few words. Hello, this is a sentence
で下図のように出力を記憶しています
awk:(FILENAME = - FNR = 1)警告:stの書き込み中にエラーが発生するandard出力(不正なファイル記述子)
ここでまともな回答を見つけることができませんでした。これはawk
でも可能ですか?正確な投稿の重複が見つかった場合は、それも評価されます!
はなぜ誤りを訂正するのではなく、エラーメッセージを抑制しない:
これはあなただけで最初の5つのワードを印刷したい場合は、
cut
を使用し、言われていますか? – Kusalananda行の最後に閉じ括弧を追加すると、うまく動作しているように見えます。マッチした行の単語が0であるため、1と5の間でループすると想像します。 – patthoyts
@Kusalananda:あなたが何を意味するか分かりません! – Inian