4番目の列の条件が一致する場合は、3番目の列の値を印刷する必要があります。

4番目の列の条件が一致する場合は、3番目の列の値を印刷する必要があります。
cat Data.log 

REPLICAT RUNNING RPGUJ3   02:00:12 00:00:06
REPLICAT RUNNING RPGUJ4   00:00:10 00:00:06
REPLICAT RUNNING RPGUJ3_3 01:00:11 00:00:00
REPLICAT RUNNING RPGUJ4_3 00:00:12 00:00:06

4列から1時間以上の値を3列に印刷したいです。次のように出力します。

RPGUJ3
RPGUJ3_3

私は1つのファイルから列3と4の出力を取得しようとします。

cat Data.log | awk '{print $3 "     " $4}' >1.out

cat 1.out 

RPGUJ3      02:00:12
RPGUJ4      00:00:10
RPGUJ3_3    01:00:11
RPGUJ4_3    00:00:12

しかし印刷できません。

RPGUJ3
RPGUJ3_3

答え1

$ 4の最初の2桁の数字が次のようになっていることを確認してください00

awk 'substr ($4, 1, 2) != "00" { print $3; }' Data.log > 1.out

awk独自のデータファイルを読み取ることができます。catパイプは必要ありません。

$ cat Data.log
REPLICAT RUNNING RPGUJ3   02:00:12 00:00:06
REPLICAT RUNNING RPGUJ4   00:00:10 00:00:06
REPLICAT RUNNING RPGUJ3_3 01:00:11 00:00:00
REPLICAT RUNNING RPGUJ4_3 00:00:12 00:00:06
$ awk 'substr ($4, 1, 2) != "00" { print $3; }' Data.log > 1.out
$ cat 1.out
RPGUJ3
RPGUJ3_3
$ 

答え2

awkを使用してください。

$ awk '$4+0{print $3}' Data.log
RPGUJ3
RPGUJ3_3

toを追加すると、0awk$402:00:12文字列(たとえば)を数値に変換するように指示します。まず、先行番号の後のすべての項目を削除してこれを行います。この場合、最初の数字で始まるので:結果はです2。その後、その結果番号を条件として使用すると、結果があればfalseになり0、そうでない場合はtrueになりますC。これは他の言語と同様に次のようになります。

$ awk '{print $4, "->", $4+0, "->", ($4+0 ? "true" : "false")}' Data.log
02:00:12 -> 2 -> true
00:00:10 -> 0 -> false
01:00:11 -> 1 -> true
00:00:12 -> 0 -> false

関連情報