将前导零添加到第一列

将前导零添加到第一列

我希望将四个前导零添加到 csv 文件的第一列,因此:

EADUnitID,irn,EADPhysicalTechnical,AdmPublishWebNoPassword,AdmPublishWebPassword,EADUnitTitle,EADBiographyOrHistory,EADScopeAndContent,EADArrangement,EADAcquisitionInformationRef.SummaryData,EADRelatedMaterial,BibBibliographyRef_tab.SummaryData
ga.1.2.6,52144,GLS Add. GA 1/2/6,Yes,Yes,Dzöfi. ,,,,,,
ga.1.2.7,52145,GLS Add. GA 1/2/7,Yes,Yes,Dzöfi. ,,,,,,
ga.1.2.8,52146,GLS Add. GA 1/2/8,Yes,Yes,Two young girls. ,,,,,,
ga.1.2.9,52147,GLS Add. GA 1/2/9,Yes,Yes,J. Blum. ,,,,,,
ga.1.2.10,52148,GLS Add. GA 1/2/10,Yes,Yes,TsïGA.0 ,,,,,,
ga.1.2.11,52149,GLS Add. GA 1/2/11,Yes,Yes,Wupa. ,,,,,,
ga.1.2.12,52150,GLS Add. GA 1/2/12,Yes,Yes,Tochter des Bälo Laubinger. Stamm: Lowära, Pferdezigeuner. ,,,,,,
...<snip>...
ga.1.2.311,52449,GLS Add. GA 1/2/311,Yes,Yes,Beinrode 1962. Zu dunkel! ,,,,,,
ga.1.2.312,52450,GLS Add. GA 1/2/312,Yes,Yes,Bienrode 1962. Zu dunkel! ,,,,,,
ga.1.2.313,52451,GLS Add. GA 1/2/313,Yes,Yes,Bienrode 1962. Zu dunkel! ,,,,,,
ga.1.2.314,52452,GLS Add. GA 1/2/314,Yes,Yes,Lowara und Sintitsa! FrÜhjahr Bienrode 1962. ,,,,,,
ga.1.2.315,52453,GLS Add. GA 1/2/315,Yes,Yes,Madamenweg Walódza und Peabaí März 1962. Als ich die Familie photographierte, entbläßte plötzlich die Frau ihre Brust Vielleicht hätte ich nun nicht knipsen dÜrfen. Aber anderseits war das Erleben interessant. Offenbar meint die Frau mit Liege ansolchen Bildern. Georg Althaus. ,,,,,,
ga.1.2.316,52454,GLS Add. GA 1/2/316,Yes,Yes,Dzöfi. Dzöfi u. ihre schwester Rúpa gehören zur Gruppe der ungarischen Zig., mithin zu den Romzig. Sie sind also Lòwära, Pferdezig. ,,,,,,
ga.1.2.319ca,52455,GLS Add. GA 1/2/317-327,Yes,Yes,Closed to Access ,,,,,,
ga.2,52456,GLS Add. GA 2,Yes,Yes,Hanns Weltzel papers. ,,,,,,

看起来像这样:

EADUnitID,irn,EADPhysicalTechnical,AdmPublishWebNoPassword,AdmPublishWebPassword,EADUnitTitle,EADBiographyOrHistory,EADScopeAndContent,EADArrangement,EADAcquisitionInformationRef.SummaryData,EADRelatedMaterial,BibBibliographyRef_tab.SummaryData
ga.00001.00002.00006,52144,GLS Add. GA 1/2/6,Yes,Yes,Dzöfi. ,,,,,,
ga.00001.00002.00007,52145,GLS Add. GA 1/2/7,Yes,Yes,Dzöfi. ,,,,,,
ga.00001.00002.00008,52146,GLS Add. GA 1/2/8,Yes,Yes,Two young girls. ,,,,,,
ga.00001.00002.00009,52147,GLS Add. GA 1/2/9,Yes,Yes,J. Blum. ,,,,,,
ga.00001.00002.00010,52148,GLS Add. GA 1/2/10,Yes,Yes,TsïGA.0 ,,,,,,
ga.00001.00002.00011,52149,GLS Add. GA 1/2/11,Yes,Yes,Wupa. ,,,,,,
ga.00001.00002.00012,52150,GLS Add. GA 1/2/12,Yes,Yes,Tochter des Bälo Laubinger. Stamm: Lowära, Pferdezigeuner. ,,,,,,
...<snip>...
ga.00001.00002.00311,52449,GLS Add. GA 1/2/311,Yes,Yes,Beinrode 1962. Zu dunkel! ,,,,,,
ga.00001.00002.00312,52450,GLS Add. GA 1/2/312,Yes,Yes,Bienrode 1962. Zu dunkel! ,,,,,,
ga.00001.00002.00313,52451,GLS Add. GA 1/2/313,Yes,Yes,Bienrode 1962. Zu dunkel! ,,,,,,
ga.00001.00002.00314,52452,GLS Add. GA 1/2/314,Yes,Yes,Lowara und Sintitsa! FrÜhjahr Bienrode 1962. ,,,,,,
ga.00001.00002.00315,52453,GLS Add. GA 1/2/315,Yes,Yes,Madamenweg Walódza und Peabaí März 1962. Als ich die Familie photographierte, entbläßte plötzlich die Frau ihre Brust Vielleicht hätte ich nun nicht knipsen dÜrfen. Aber anderseits war das Erleben interessant. Offenbar meint die Frau mit Liege ansolchen Bildern. Georg Althaus. ,,,,,,
ga.00001.00002.00316,52454,GLS Add. GA 1/2/316,Yes,Yes,Dzöfi. Dzöfi u. ihre schwester Rúpa gehören zur Gruppe der ungarischen Zig., mithin zu den Romzig. Sie sind also Lòwära, Pferdezig. ,,,,,,
ga.00001.00002.00319ca,52455,GLS Add. GA 1/2/317-327,Yes,Yes,Closed to Access ,,,,,,
ga.00002,52456,GLS Add. GA 2,Yes,Yes,Hanns Weltzel papers. ,,,,,,

我尝试过查看 gsub、gensub 和 printf,但我对如何继续感到有点茫然。

答案1

是的,稍微有点棘手。尝试

awk -F, '
        {n=split ($1, T, "\.")
         $1 = DL = ""
         for (i=1; i<=n; i++)   {S[i] = T[i] + 0
                                 gsub (/[0-9]/, "", T[i])
                                 $1 = $1 DL (S[i]?sprintf ("%05d", S[i]):"") T[i]
                                 DL = "."
                                }
        }
1
' OFS=, file

它将第一个字段拆分.为 array T,然后循环遍历T,将相应元素的起始数字放入 array S(利用awks 功能仅使用字符串的前导数字进行算术),从 中删除(仅!)前导数字T,然后重建场$1

答案2

如果 Perl 是一个选择

perl -F, -pe '$_ = join ",", @F if $F[0] =~ s/(\d+)/sprintf "%05d", $1/ge' file

相关内容