awk:如何删除整列的第一个和最后一个值

awk:如何删除整列的第一个和最后一个值,awk,Awk,我有一个由几列组成的数据。在一列中,我想删除两个逗号,它们分别位于整列的开头和结尾。我的数据如下所示: a ,3,4,3,2, b ,3,4,5,1, c ,1,5,2,4,5, d ,3,6,24,62,3,54, 有人能教我如何删除此数据上的第一个和最后一个逗号吗?我将不胜感激 awk '{sub(/,/,"",$0); print substr($0,0,length($0)-1)}' input.txt 输出: a 3,4,3,2, b 3,4,

我有一个由几列组成的数据。在一列中,我想删除两个逗号,它们分别位于整列的开头和结尾。我的数据如下所示:

a    ,3,4,3,2,
b    ,3,4,5,1,
c    ,1,5,2,4,5,
d    ,3,6,24,62,3,54,
有人能教我如何删除此数据上的第一个和最后一个逗号吗?我将不胜感激

awk '{sub(/,/,"",$0); print substr($0,0,length($0)-1)}'  input.txt
输出:

a    3,4,3,2,
b    3,4,5,1,
c    1,5,2,4,5,
d    3,6,24,62,3,54

您也可以使用
sed
执行此操作:

sed -e 's/,//' -e 's/,$//' file
也就是说“用零替换行中的第一个逗号”,然后“用零替换行尾的逗号”

如果希望它写入新文件,请执行以下操作:

sed -e 's/,//' -e 's/,$//' file > newfile.txt

你能发布你希望数据最后看起来如何吗?+1简单。为了让它变得复杂,我们可以做
sed-r:a;s/,|,$/;ta'文件(使用
gnu sed
)。+1:这很好,尽管输出似乎会在第一列和第二列之间留出空格,但它只是在字段之间重新编译$0,并在字段之间使用OFS,这有助于修改字段。通常不是问题,如果是,也不容易解决。
$ awk '{gsub(/^,|,$/,"",$NF)}1' file
a 3,4,3,2
b 3,4,5,1
c 1,5,2,4,5
d 3,6,24,62,3,54