awk 拆分更多列并打印第一个单词

Von*_*ton 3 awk split loops cut sed

我有逗号分隔的文件,我想用相同的拆分条件将第 15 列拆分为 $NF(第 15 列到最后一列),split($column,a,"-")并为每个拆分的列打印 a[1]。我不能循环从第 n 列到最后一列并为每个列打印。

awk -F',' -v OFS="\t" '{for(i;$15<i<$NF,i+1);split($i,a,"_"); print ???}' file.csv
Run Code Online (Sandbox Code Playgroud)

文件打印表格第 15 列的示例:

NBPF1-chr1-16579269-16579502-MedEx,NBPF1-chr1-16580779-16580863-MedEx,NBPF1-chr1-16581333-16581592-MedEx,NBPF1-chr1-16582457-16582758-MedEx,NBPF1-chr1-16583499-16583796-MedEx
Run Code Online (Sandbox Code Playgroud)

我的期望:

NBPF1,NBPF1,NBPF1,NBPF1,NBPF1,NBPF1
Run Code Online (Sandbox Code Playgroud)

谢谢你。

Rav*_*h13 5

使用您显示的示例,请尝试以下awk代码。i=15在以下awk代码中更改或从要开始循环的位置到当前行的最后一个字段的任何字段。

awk '
BEGIN{
  FS=OFS=","
}
{
  value=""
  for(i=1;i<=NF;i++){
    split($i, a, /-/)
    value=(value?value OFS:"")a[1]
  }
  print value
}
'  Input_file
Run Code Online (Sandbox Code Playgroud)