linux - 如何使用 awk 按字母或结束字符分隔字段

标签 linux bash perl awk grep

我的数据库中有 2 个字段

ID25333,1429291340lNormPUC-AP_MEX_UFM-GOL_44PUC-AP_VEX_UFM-ROL_55PUCAP_MEX_UFM-DOJ_49
ID55555,1429291340lNormPUC-AP_PPP_UFM-HOL_44PUC-AF_GEX_UJM-SOL_45PUCAP_MEX_UFM-DOJ_59

我需要像这样分开

ID25333,PUC-AP_MEX_UFM-GOL_44     
ID25333,PUC-AP_VEX_UFM-ROL_55
ID25333,PUCAP_MEX_UFM-DOJ_49
ID55555,PUC-AP_PPP_UFM-HOL_44
ID55555,PUC-AF_GEX_UJM-SOL_45
ID55555,PUCAP_MEX_UFM-DOJ_59

具有相同的编号 ID

我使用 AWK 或 grep

awk 'BEGIN{FS="PUC"}{for(i=1;i<=NF;i++)print $(i)}'

任何建议

谢谢!

最佳答案

使用 GNU awk:

$ awk -F, '{gsub(/PUC/, ","); for (i=3;i<=NF;i++)print $1",PUC"$i}' file.db
ID25333,PUC-AP_MEX_UFM-GOL_44
ID25333,PUC-AP_VEX_UFM-ROL_55
ID25333,PUCAP_MEX_UFM-DOJ_49
ID55555,PUC-AP_PPP_UFM-HOL_44
ID55555,PUC-AF_GEX_UJM-SOL_45
ID55555,PUCAP_MEX_UFM-DOJ_59

或者:

$ awk -F'(,|PUC)' '{for (i=3;i<=NF;i++)print $1",PUC"$i}' file.db
ID25333,PUC-AP_MEX_UFM-GOL_44
ID25333,PUC-AP_VEX_UFM-ROL_55
ID25333,PUCAP_MEX_UFM-DOJ_49
ID55555,PUC-AP_PPP_UFM-HOL_44
ID55555,PUC-AF_GEX_UJM-SOL_45
ID55555,PUCAP_MEX_UFM-DOJ_59

关于linux - 如何使用 awk 按字母或结束字符分隔字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29737155/

相关文章:

perl - 该Perl代码如何工作?

linux - xargs + curl "Failed writing body"(不能将多个结果保存到文件)

python - 将从 python 字典中提取的信息写入文件

linux bash : when opening xterm with -e, 变量未定义

bash - Sed/Awk - 在模式 x 和 y 之间拉线

perl - 在 perl 中使用 x.x.x.x 格式对数字进行排序

perl - 如何使用一条语句读取 Perl 中的目录?

linux LF 在我的 perl 脚本中不起作用

python - 在我的 apache 本地主机 Ubuntu 12.04 中安装 WSGI

bash - 为什么每次打开终端时都必须获取 .bashrc 才能使别名起作用?