シェルスクリプトを使用してデータベース仮想マシンでデータベース呼び出しを実行し、クエリ応答を受け取り、.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
-n
sed
デフォルトでは、パターンスペースを印刷しないように指示します(私たちはコマンドのフラグを使用して目的のパターンスペースを印刷しますp
)s
。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}'
答え2
$ awk '{n=(NR%3)} n==1{folder=$1} (n==0) && ($0!=18){print folder, $0}' file
X 17
Y 17