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