次のファイルがあります.txt
。
ABC Corp
1234 7 Oaks Lane
Denton; TX 76509-4321
(682) 543-7890
コマンドを使用して、郵便番号の最後の4桁を逆に変更する必要がありますsed
。出力例:
ABC Corp
1234 7 Oaks Lane
Denton; TX 76509-1234
(682) 543-7890
郵便番号の前にテキストがあり、その間にダッシュがある3行目です。したがって、3行目のダッシュ以降のすべてです。郵便番号が完全に独立している場合にのみこれを実行できます。私は試した:
sed -i -e 's/([0-9])([0-9])([0-9])([0-9])([0-9])-([0-9])([0-9])([0-9])([0-9])/\9\8\7\6/' test.txt
ただし、これを行うと、元に戻して他のすべてのアイテムが削除されます。
ベストアンサー1
まず、その行に固有のいくつかのパターンを見つけて、コマンドを単純化できます。次の例では、セミコロンが解析される行;
に固有であると仮定します(少なくとも例のテキストでは)sed
。
# capture the last 4 digits of the line and substitute them in reverse order
$ sed '/;/s/\(.\)\(.\)\(.\)\(.\)$/\4\3\2\1/'
ABC Corp
1234 7 Oaks Lane
Denton; TX 76509-1234
(682) 543-7890