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

标签 loops awk sed split cut

我有逗号分隔的文件,我想以相同的拆分条件将第 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
文件打印表格第 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
我的期望:
NBPF1,NBPF1,NBPF1,NBPF1,NBPF1,NBPF1
谢谢你。

最佳答案

使用您展示的 sample ,请尝试关注 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

关于loops - awk 拆分更多列并打印第一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68486310/

相关文章:

c - 获取所有素数

javascript - 更改 JavaScript 中 forEach 循环的每次迭代的颜色?

linux - 从命令行调用 sed 但在脚本中失败

linux - 在linux中根据内容拆分文件

sed - grep 或 sed 比较两个文件中的数据

regex - 使用 bash 仅匹配第一段

php - 仅从数组键的开头删除潜在字符

python - 在继续循环的同时将值输出到另一个函数

regex - 使用awk计算并打印正则表达式得到的值的平均值

bash - 并排连接两个文件,附加字段之间的差异,并以表格格式打印