cut
スクリプトを書いたときに奇妙な問題が発生しました。そこに行があります。
... | cut -d" " -f3,4 >! out
カットはこのデータを受け取ります(エコーでチェックしました)
James James 033333333 0 0.00
しかし、私はで空の行を受け取りますout
、誰かが理由を説明できますか?
スペースのシーケンスを圧縮して、スペースの各文字列が単一のスペースに置き換えられるようにする必要があります。tr
コマンドの-s (squeeze)オプションは、これに最適です。
$ ... | tr -s " " | cut -d" " -f3,4 >! out
テキストファイルのフィールドが必要な場合awk
は、ほとんどの場合、次のようになります。
... | awk '{print $3" "$4}'
例えば:
$ echo 'James James 033333333 0 0.00' | cut -d" " -f3,4
$ echo 'James James 033333333 0 0.00' | awk '{print $3" "$4}'
033333333 0
カットは複数のスペースを単一のスペースと見なさないため、スペース間の「無」に一致します。
一部を省略したときに空行が表示されます >! out
か? つまり、正しいフィールドをターゲットにしていますか?
入力文字列が固定間隔を使用している場合、 を使用cut -c 4-10,15-20 | tr -d ' '
して文字グループ 4 ~ 10 および 15 ~ 20 を抽出し、それらからスペースを削除することができます。
... | grep -o "[^ ]*"
それぞれ別の行にフィールドを抽出します。次に、それらを頭/尾にすることができます。それらを再び同じ行に配置するかどうかはわかりません。