条件に応じて特定のテキストを取得するシェル方法

条件に応じて特定のテキストを取得するシェル方法

シェルスクリプトを使用してデータベース仮想マシンでデータベース呼び出しを実行し、クエリ応答を受け取り、.txtファイルに保存します。次のように:

X folder Check:
Number of Files on X Outbound
17
Y folder Check:
Number of Files on Y Outbound
17
Z folder Check:
Number of Files on Z Outbound
18

今X、Y、Zのそれぞれについて。デフォルトでは、その場所からファイル(数)を受け取ります。したがって、X、Y、Z ごとに「18」個のファイルが得られると予想されます。これで、シェルを使用して18個のファイルを受け取らないフォルダを知って保存できるようになります。

例: 上記のシナリオでは、X フォルダーと Y フォルダーの欠落ファイルを見つける必要があります。

ベストアンサー1

sed -n 'N;N;/\n18$/!s/ folder Check:\n.*\n/ /p'

このテキストは次のように出力されます。

X 17
Y 17
  • -nsedデフォルトでは、パターンスペースを印刷しないように指示します(私たちはコマンドのフラグを使用して目的のパターンスペースを印刷しますps
  • N;N:次の2行をパターン空間にドラッグし、3行のパターン空間で一度に3行ずつ処理します。
  • /\n18/!:パターンスペースが()ではなく()で!終わる場合$<newline>18
  • s/folder Check:\n.*\n//p:フォルダ名と数の間の部分を削除してp印刷します。必要に応じてフォルダ名だけを保持しs/ folder Check:\n.*//pたり()、3行全体をダンプすることもできます()。p

awk同じ

awk '{sub(/ folder Check:$/, ""); folder = $0; getline; getline; count = $0}
     count != 18 {print folder, count}'

おすすめ記事