我有一个用Cedilla分隔的文件,但记录只有一行。我必须将其转换为多行文件。
样本记录:
P002365Ç1200ÇMastercardÇcarolinaÇBasildonÇEnglandÇUnited kingdomÇP002368Ç2100ÇVisaÇGouyaÇEchucaÇVictoriaÇAustraliaÇP002373Ç3600ÇMastercardÇRenee ElisabethÇTel AvivÇTel AvivÇIsraelÇP002382Ç6300ÇDinersÇbarbaraÇHyderabadÇAndhra PradeshÇIndia
需要转换为:
P002365Ç1200ÇMastercardÇcarolinaÇBasildonÇEnglandÇUnited Kingdom
P002368Ç2100ÇVisaÇGouyaÇEchucaÇVictoriaÇAustralia
P002373Ç3600ÇMastercardÇRenee ElisabethÇTel AvivÇTel AvivÇIsrael
P002382Ç6300ÇDinersÇbarbaraÇHyderabadÇAndhra PradeshÇIndia
我们可以使用awk命令实现这一目标吗?
答案 0 :(得分:4)
您可以使用以下内容:
awk -FÇ '{for (i=1;i<=NF;++i) printf "%s%s", $i, (i%7==0?RS:FS)}' file
P002365Ç1200ÇMastercardÇcarolinaÇBasildonÇEnglandÇUnited kingdom
P002368Ç2100ÇVisaÇGouyaÇEchucaÇVictoriaÇAustralia
P002373Ç3600ÇMastercardÇRenee ElisabethÇTel AvivÇTel AvivÇIsrael
P002382Ç6300ÇDinersÇbarbaraÇHyderabadÇAndhra PradeshÇIndia
这里发生了什么:
-FÇ
- 此命令行参数将FS
变量(字段分隔符)设置为Ç
字符NF
(Number [of] Fields)printf
打印两个字符串(%s%s
),第一个是实际字段的内容($i
),第二个是两个字符串之一选项:
RS
记录分隔符),FS
。 (定义为Ç
字符)。*数字7是“任意”使用的,因为它是根据您提供的示例输出拆分记录的定义。
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed 's/Ç/\n/7;P;D' file
这会使用换行符替换每7个Ç
。