LinuxでテキストファイルのGPSデータを変更しようとしています。
無効な文字列モデル:49:29:37N 005:28:39E
2桁または3桁:2桁または3桁:2桁または3桁(N | S)2桁または3桁:2桁または3桁:2桁または3桁(E | W)
正しい文字列モデル:49:29:37 N 005:28:39 E
2桁または3桁:2桁または3桁:2桁または3桁(N | S)2桁または3桁:2桁または3桁:2桁または3桁(E | W)
誰もが私がこれをするのを助けることができますか?
ありがとう
ニコラス
答え1
可能な4文字すべての前にスペースを挿入してくださいsed
。
sed 's/[NESW]/ &/g' file
出力:
49:29:37 北 005:28:39 東
答え2
コンパスの方向を表す数字と文字の間にスペースを追加したい場合は、次のような効果があるようです。
sed -E 's/([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3})([NS])\s+([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3})([EW])/\1 \2 \3 \4/g' input.txt
input.txt
または、出力をファイルにしたい場合は、stdinで指定し、パイプしないで末尾に> output.txt
追加します。
これは、N / Sと次の座標で始まる数字の間にスペースまたは他のスペース文字を受け入れ、その位置に単一のスペースを出力します。必要に応じて調整を行うことができます。
編集:一部の入力データにすでに2つの座標のうちの1つの座標番号と方向文字の間にスペースがありますが、両方にはない場合は、次のようにします。
sed -E 's/([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3}) *([NS])\s+([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3}) *([EW])/\1 \2 \3 \4/g' input.txt