awk仅保留逗号分隔字段上的第一个和最后一个值

awk仅保留逗号分隔字段上的第一个和最后一个值,awk,Awk,嗨,我试图在我的数据上只保留逗号分隔字段的第一个和最后一个值。下面是我的输入数据的样子 a 1 y 1,2,4,3,6,2,1 b 2 y 3,56,3,2,1 c 3 n 4,3,2,1,4 我只想将第一个和最后一个值保留在我的数据的第四个coulmn上,以便我的数据如下所示: a 1 y 1,1 b 2 y 3,1 c 3 n 4,4 有人能帮我怎么做吗?谢谢你awk-F,{printf

嗨,我试图在我的数据上只保留逗号分隔字段的第一个和最后一个值。下面是我的输入数据的样子

a    1   y    1,2,4,3,6,2,1
b    2   y    3,56,3,2,1
c    3   n    4,3,2,1,4
我只想将第一个和最后一个值保留在我的数据的第四个coulmn上,以便我的数据如下所示:

a    1    y    1,1
b    2    y    3,1
c    3    n    4,4
有人能帮我怎么做吗?谢谢你

awk-F,{printf”%s,%s\n“,$1,$NF}”
应该做这项工作

试试这个:

awk -F, -vOFS=, '{print $1,$NF}' input.txt

  • -F,
    输入字段分隔符
  • -vOFS=,
    输出字段分隔符
  • $1
    第一个字段
  • $NF
    最后一个字段
尝试此awk命令:

awk '{size = split($4,numbers,",")}   {print $1" "$2" "$3" "numbers[1]","numbers[size]}'

这将第四个字段拆分为一个数组,将大小保存为
size
,打印前3个字段,然后打印
数字数组的第一个和最后一个元素。

如果其他字段可以包含逗号:

$ awk '{sub(/,.*,/,",",$NF)}1' file
a 1 y 1,1
b 2 y 3,1
c 3 n 4,4
如果没有:

$ awk '{sub(/,.*,/,",")}1' file
a    1   y    1,1
b    2   y    3,1
c    3   n    4,4

你问了几个问题,它们之间的差别很小。如果你得到了所有的答案,你学到了什么?我想说的不多。事实上,我测试了printf,但得到了一个奇怪的行为,但这是我学期的错。编辑;-)