![ファイル[重複]のパターンの上の行を返します。](https://linux33.com/image/187119/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%5B%E9%87%8D%E8%A4%87%5D%E3%81%AE%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%AE%E4%B8%8A%E3%81%AE%E8%A1%8C%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
この出力があります
v12: "owner" : "cs1372",
v12: "num-of-connections" : 1,
v12: "owner" : "cq5838",
v5: "owner" : "bb9886",
v5: "owner" : "aq0903",
v5: "owner" : "bj2468",
v5: "owner" : "di3080",
v5: "num-of-connections" : 1,
リンクされた行数よりも高い行を返す必要があります。だから私が望む出力は
v12: "owner" : "cs1372",
v5: "owner" : "di3080",
sedやawkを使ってこれを行う簡単な方法はありますか?
答え1
使用awk
:
$ awk '$2=="\"num-of-connections\""{ print prev } { prev=$0 }' file
v12: "owner" : "cs1372",
v5: "owner" : "di3080",
現在のレコードを変数に保存しますprev
。 2番目のフィールドが同じ場合は"num-of-connections"
変数を印刷しますprev
。