awkおよび/またはgrepを使用して事前定義された値に基づいて個々の行を検索し、次の行に一致する値があることを確認してください。

awkおよび/またはgrepを使用して事前定義された値に基づいて個々の行を検索し、次の行に一致する値があることを確認してください。

次の行を取得するとしましょう。

[duration] =>  92
[from] => 18884541236
[to] => 17841234568

私が望むのは、ファイル全体を検索して[送信者]番号が[受信者]番号と同じインスタンスを確認することです。

だから、次のような項目があれば

[duration] => 43
[from] =>  17873332222
[to] => 17873332222

次の行では、[from]番号の直後に同じ[to]番号が続く場所をファイルから検索できます。

ベストアンサー1

[to]このコマンドは、行番号と最初のフィールドを持ち、3番目のフィールドが最後に表示された値と同じ行の内容を印刷します[from]

awk '{ if($1=="[from]"){from=$3} } $1=="[to]" && $3==from{print NR,$0}' file 

このファイルを入力として使用します。

[duration] =>  92
[from] => 18884541236
[to] => 17841234568
[duration] => 43
[from] =>  17873332222
[to] => 17873332222

次の結果が表示されます。

$ awk '{ if($1=="[from]"){from=$3} } $1=="[to]" && $3==from{print NR,$0}' file 
6 [to] => 17873332222

おすすめ記事