文字列の最初の列からすべての先行ゼロのみを削除

文字列の最初の列からすべての先行ゼロのみを削除

パイプで区切られたファイルがあり、そのファイルと結合するには、最初の列から先行ゼロを削除する必要がありますが、ファイルの他の列から削除しないでください。

構造は次のとおりです。

GA.01.02.070|GLS Add. GA 1/2/70|Wohl: Wagon d. Kelderära. ||||||
GA.01.02.071|GLS Add. GA 1/2/71|Tsä der Kelderära. Roßlau, 1935. ||||||
GA.01.02.072|GLS Add. GA 1/2/72|Rómni der Kelderära. ||||||
GA.01.02.073|GLS Add. GA 1/2/73|Wagen des Mets. Roßlau/ 1934. ||||||
GA.01.02.074|GLS Add. GA 1/2/74|Kastanja Ansin. ||||||
GA.01.02.075|GLS Add. GA 1/2/75|Raupa Ansin. ||||||

私が望む出力は次のとおりです。

GA.1.2.70|GLS Add. GA 1/2/70|Wohl: Wagon d. Kelderära. ||||||
GA.1.2.71|GLS Add. GA 1/2/71|Tsä der Kelderära. Roßlau, 1935. ||||||
GA.1.2.72|GLS Add. GA 1/2/72|Rómni der Kelderära. ||||||
GA.1.2.73|GLS Add. GA 1/2/73|Wagen des Mets. Roßlau/ 1934. ||||||
GA.1.2.74|GLS Add. GA 1/2/74|Kastanja Ansin. ||||||
GA.1.2.75|GLS Add. GA 1/2/75|Raupa Ansin. ||||||

sedを使用して最初の先行ゼロまたはすべての0を削除する方法を見つけることができましたが、最初のパイプの前の先行ゼロのみを削除する方法は見つかりませんでした。

答え1

厳密な要件ではない場合、sedこの問題を解決するためのAWKスクリプトは次のとおりです。

awk -F\| 'BEGIN { OFS = FS } { gsub("\\.0+", ".", $1); print }'

これはレコードを分割し、|それを出力に使用します。各レコードの最初のフィールドで.1つ以上を置き換えてから、レコード0全体を出力します。.

関連情報