2012-03-24 9 views
4

私はCSVファイルを持っていて、19番目の列に2つ以上の文字があるすべての行をフィルタリングしたいと思います。私は個々の部分を知っていますが、一緒に接着する方法を理解することはできません。まず、ファイルをcatしなければなりません。次は19列Linuxシェルで 'where'節を実行するにはどうしたらいいですか?

awk -F "," '{print $19}' file.txt 

awkはまた、長さとIFS

を持って印刷し、私はそれがすべてのパイプを使用して一緒に接着する必要があります知っています。以前はあまり書いていないbashプログラミングをしてきたので、私はちょうどその正確な構文に立ち往生しています。

+1

'awk -F、'はCSVを解析するのに十分ではないことに注意してください。 '' Hi、World ''、1337'を考慮してください。 –

答えて

8

よりも小さい場合

awk -F ',' '{if (length($19) < 2) { print $0 }}' file.txt 

をそれはAWKプログラムとして記述され、パターンアクションペアのシリーズです行全体を出力します。

condition { action } 

conditionはあなたのフィルタです。例えば

は、すべての行を取得するには(19カラムは、少なくとも2つの文字を持っている):

$ awk -F, 'length($19)>1' file.txt 

{action}一部が欠落している場合、デフォルトのアクションは、レコードを印刷することです。

1

これは動作するはず:19フィールドの長さは2

+1

'print'がデフォルトのアクションであるため、スクリプトは' awk -F、length($ 19)<2 'file.txt' – tripleee

関連する問題