ログファイルを解凍し、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
構文エラーを修正しました。また、デフォルトの出力フィールド区切り文字(OFS
)awk
は空白です。入力フィールドの区切り文字(FS
)を別のものに設定しても(たとえば-F'- -'
、印刷するだけです。$1,$2
二重引用符スペース文字を使用する必要はありません。