0

cut スクリプトを書いたときに奇妙な問題が発生しました。そこに行があります。

... | cut -d" " -f3,4 >! out

カットはこのデータを受け取ります(エコーでチェックしました)

   James             James              033333333 0              0.00

しかし、私はで空の行を受け取りますout、誰かが理由を説明できますか?

4

4 に答える 4

1

スペースのシーケンスを圧縮して、スペースの各文字列が単一のスペースに置き換えられるようにする必要があります。trコマンドの-s (squeeze)オプションは、これに最適です。

$ ... | tr -s " " | cut -d" " -f3,4 >! out
于 2010-06-02T11:18:38.777 に答える
1

テキストファイルのフィールドが必要な場合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
于 2010-06-02T11:08:14.363 に答える
0

カットは複数のスペースを単一のスペースと見なさないため、スペース間の「無」に一致します。

一部を省略したときに空行が表示されます >! outか? つまり、正しいフィールドをターゲットにしていますか?

入力文字列が固定間隔を使用している場合、 を使用cut -c 4-10,15-20 | tr -d ' 'して文字グループ 4 ~ 10 および 15 ~ 20 を抽出し、それらからスペースを削除することができます。

于 2010-06-02T11:05:28.923 に答える
0
... | grep -o "[^ ]*"

それぞれ別の行にフィールドを抽出します。次に、それらを頭/尾にすることができます。それらを再び同じ行に配置するかどうかはわかりません。

于 2010-06-02T11:21:47.103 に答える