awkディスプレイから空白行を削除する

awkディスプレイから空白行を削除する

解決策を見つけようとしています。これ質問。ソリューションとして使用したいですawk

私の入力ファイルは次のとおりです。

-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4

awkのようにコマンドを使用して2番目の値を抽出します。_

awk -F "_" '{print $2}' file

ただし、上記のコマンドは正しい値を出力しますが、出力には空行が表示されます。質問が2つあります。

質問1

venkat出力から合計のみを取得できるように、出力から空白行を削除するにはどうすればよいですか?venkat3

私のprintf代わりに使用すると、私が得る出力は私が望む結果ではありません。私が望む出力はこれですprintawkvenkatvenkat3

venkat
venkat3

質問2

この値を次のように使用します。連想配列それとも、これらの値が実際に列に表示さ$1れるのかどうかはどうすればわかりますか?

私は次のことを達成したいと思います。

awk -F "_" '$2==1{print $1}' file

編集する

awk私はStephenの解決策に気づいていませんでした。私が言及したのと同じことをしていますか?

ベストアンサー1

別の方法:

質問1

awk -F_ '$2{print $2}' file

$2定義されている場合にのみ印刷されます。短くする方法は次のとおりです。

awk -F_ '{if($2){print $2}}' file

質問2

追加するものはありません。

おすすめ記事