Linux 如何用字母或结束字符分隔使用awk的字段
我的数据库中有两个字段Linux 如何用字母或结束字符分隔使用awk的字段,linux,bash,perl,awk,grep,Linux,Bash,Perl,Awk,Grep,我的数据库中有两个字段 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_UF
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
用相同的身份证
我正在使用AWK或grep
awk 'BEGIN{FS="PUC"}{for(i=1;i<=NF;i++)print $(i)}'
awk'BEGIN{FS=“PUC”}{(i=1;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,'{gsub(/PUC/,“,”);for(i=3;i如果您喜欢awk
awk -F, ' -v OFS=','
{
id=$1
split($2,line,"PUC")
for(i=2;i<=length(line);i++)
print id,"PUC" line[i]
}'
awk-F'-v of s=''
{
id=$1
拆分($2,行,“临市局”)
对于(i=2;i和GNU awk,用于固定宽度字段:
$ awk -v FIELDWIDTHS="8 15 21 21 21" '{for (i=3;i<=NF;i++) print $1 $i}' file
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-vfieldwidths=“8 15 21”{for(i=3;如果这些解决方案中没有任何特定的gawk。
$ awk -v FIELDWIDTHS="8 15 21 21 21" '{for (i=3;i<=NF;i++) print $1 $i}' file
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