私は以下の入力ファイルを持っており、その列に基づいてフィルタを配置する必要があります。ここで一致が見つかった場合はヘッダーを印刷し、そうでない場合はヘッダーを印刷しません。
cat test
------------------------------------------------------------------------------------------
Client-code ID BONUS Availability Offer Credit
------------------------------------------------------------------------------------------
BLAB-LO.AJBdLODikNcpok SK-19 0 AVAILABLE OFFERED NA
BLAB-LO.AJBluDikNcpok SK-1 0 AVAILABLE OFFERED NA
BLAB-LO.AJDaLAgNEp SK-19 0 AVAILABLE OFFERED NA
BLAB-LO.AJDaLDikNcpok SK-1 0 AVAILABLE OFFERED NA
BLAB-LO.AJDbLOAgNEp SK-19 0 AVAILABLE OFFERED NA
BLAB-LO.AJDbLODikNcpok SK-19 0 AVAILABLE OFFERED NA
BLAB-LO.AJHbmLO SK-1 0 AVAILABLE OFFERED NA
BLAB-LO.AJAcLOBollNcpok SK-19 0 AVAILABLE OFFERED NA
BLAB-LO.AJAcLOApkNamNk SK-19 0 AVAILABLE OFFERED NA
KONEAAO SK-19 0 AVAILABLE OFFERED NA
BLAB-LO.AJHbmLO SK-11 0 AVAILABLE OFFERED NA
BLAB-LO.AJAcLOBollNcpok SK-1 0 AVAILABLE OFFERED NA
BLAB-LO.AJAcLOApkNamNk SK-10 0 AVAILABLE OFFERED NA
、私はthis に基づいて、平等ではなく、正規表現を使用して、2列目のフィルタを入れています。
awk -v userInput='SK-1' 'NR<4 || $2 == userInput' test
------------------------------------------------------------------------------------------
Client-code ID BONUS Availibility Offer Credit
------------------------------------------------------------------------------------------
BLAB-LO.AJBluDikNcpok SK-1 0 AVAILABLE OFFERED NA
BLAB-LO.AJDaLDikNcpok SK-1 0 AVAILABLE OFFERED NA
BLAB-LO.AJHbmLO SK-1 0 AVAILABLE OFFERED NA
BLAB-LO.AJAcLOBollNcpok SK-1 0 AVAILABLE OFFERED NA
これは一致するものがあればうまく動作しますが、一致するものがなければ空のヘッダが得られます。私はヘッダー行を取り除きたい。 (最初の3行)。
これは望ましくありません。希望
awk -v userInput='SK-122' 'NR<4 || $2 == userInput' test
------------------------------------------------------------------------------------------
Client-code ID BONUS Availibility Offer Credit
------------------------------------------------------------------------------------------
:
一致がない場合は、私が取得する必要があります:空白または不一致がメッセージを見つけました。
awk -v userInput='SK-122' 'NR<4 || $2 == userInput' test