行ごとに重複する文字列を削除しようとしていました。例えば:
A {id: "x" p {id: "vcv" v: "i4"} on:taf"}
A {id: "y" p {id: "wse" v: "i4"} on:ue"}
A {id: "z" p {id: "das" v: "i4"} on:tade"}
A {id: "x" p {id: "da" v: "i4"} on:faer"}
A {id: "y" p {id: "werw" v: "i4"} on:asee"}
A {id: "y" p {id: "werw" v: "i4"} on:asee"}
出力は、A_id が重複していないものである必要があります。つまり、出力は次のようになります。
A {id: "x" p {id: "vcv" v: "i4"} on:taf"}
A {id: "y" p {id: "wse" v: "i4"} on:ue"}
A {id: "z" p {id: "das" v: "i4"} on:tade"}
私が遭遇した問題は、部分文字列のみでソートして一意にする方法がわからないことでした。私は使用しようとしました:
cat input.txt | grep 'A\s\{id:\s\"[^;]*\sp\s\{id:' | sort -u > output.txt
ただし、重複する部分文字列は削除されませんが、他の行とまったく同じ行のみが削除されます。したがって、削除されただけのようです:
A {id: "y" p {id: "werw" v: "i4"} on:asee"}
最後の 2 行はすべて同じですが、削除されていません。
A {id: "y" p {id: "wse" v: "i4"} on:ue"}
IDは重複していますが、内容が異なります。