ファイルを解凍し、AWKとパイプを使用してその内容を処理します。

ファイルを解凍し、AWKとパイプを使用してその内容を処理します。

ログファイルを解凍し、awkを使用してそのログファイルの特定の列を表示する必要があります。パイプを使用してこれを実行できますか?

unzip log.zip | awk -F "- -" '{pring $1 " " $2} >newfile

ベストアンサー1

unzip.zipファイルの内容をstdoutに解凍するには、のオプションを使用する必要があります-c。それ以外の場合は、.zipファイルのファイルをディスクに解凍し、パイプする項目はありませんawk

Unixではなく、MS-DOS / Windowsで起動された多くのプログラムと同様に、unzipこのプログラムも実行する作業について説明します。 Unixプログラムは通常、または-vオプションまたは同様のオプションを使用して明示的に指示しない限り、この操作を実行しません。これはdos / windowsとunixソフトウェアの間の重要な文化的違いです。そしてプログラマー。--verbose--debug

stdinから入力を受け取るすべてのプログラムのPOVから見ると、これは難読化されたゴミであることがほぼ確実です(これがUNIXプログラムがユーザーが指示しない限り冗長ではない理由です)。したがって、(静か)または(非常に静か)オプションを使用して、unzip「Shut up and get to work(閉じて仕事を始めてください)」と言ってください。-q-qq

例えば

unzip -qq -c log.zip | awk -F'- -' '{print $1, $2}' >newfile

ちなみにawkスクリプトを少し変更しました。pring構文エラーを修正しました。また、デフォルトの出力フィールド区切り文字(OFSawkは空白です。入力フィールドの区切り文字(FS)を別のものに設定しても(たとえば-F'- -'、印刷するだけです。$1,$2二重引用符スペース文字を使用する必要はありません。

おすすめ記事