我正在解析维基百科表格。该表包含的数据如下
Tonga
0
Trinidad and Tobago
10
14
24
Tunisia
10
6
16
Turkey
12
14.5
26.5
Run Code Online (Sandbox Code Playgroud)
我想要一个正则表达式(可在终端中执行,最好是 sed 或类似的)将任意数量的 N 行数字移动到上述 AZ 国家/地区名称
预期的输出是:
Tonga,0
Trinidad and Tobago,10,14,24
Tunisia,10,6,16
Turkey,12,26.5
Run Code Online (Sandbox Code Playgroud)
我还没有接近,这是我最大的努力。欣赏你的智慧
perl -pe 's/^[0-9]*$/\n,/g'
生产
,
Trinidad and Tobago
,
,
,
Tunisia
,
,
,
Turkey
,
14.5
26.5
Run Code Online (Sandbox Code Playgroud)
这是不正确的,因为我正在替换 WITH\n
并且需要替换\n
WITH 其他内容。不幸的是,我不知道是否可以\n
与 sed/perl匹配
我试过tr
,但我又不知道如何在输出上保持匹配。它将所有字符替换为
tr 'A-z\n' ','
生产
,,,,,,0,,,,,,,,, ,,, ,,,,,,,10,14,24,,,,,,,,,10,6,16,,,,,,,,12,14.5,26.5,
$ awk '{printf "%s%s", (/^[0-9]/ ? "," : s), $0; s=ORS} END{print ""}' file
Tonga,0
Trinidad and Tobago,10,14,24
Tunisia,10,6,16
Turkey,12,14.5,26.5
Run Code Online (Sandbox Code Playgroud)