我有一个包含多个字段和多行的文件,如下所示:
111 768 359
0|1:1:0,1,0 1|1:2:0,0,1 0|1:1:0,1,0
1|1:2:0,0,1 0|1:1:0,1,0 0|0:0:1,0,0
0|0:0:1,0,0 1|1:2:0,0,1 1|1:2:0,0,1
在每个单元格中,我只想保留前三个字符,以便输出如下所示:
111 768 359
0|1 1|1 0|1
1|1 0|1 0|0
0|0 1|1 1|1
基本上我想要的是从每个'单元'中删除剩余的字符。我怎样才能做到这一点?希望问题很清楚。如果没有,请告诉我,我会尝试解释更多
感谢。
答案 0 :(得分:2)
使用awk你可以这样做:
awk '{for (i=13;i<=NF;i++) $i=substr($i,1,3)} 1' file
111 768 359
0|1 1|1 0|1
1|1 0|1 0|0
0|0 1|1 1|1
更新符合12th row and 10th field onwards
要求:
awk 'NR>10{for (i=13;i<=NF;i++) $i=substr($i,1,3)} 1' file
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed -r '12,$s/(\S{3})\S*(\s)*/\1\2/10g' file
如果您想保留空白区域:
sed -r '12,$s/(\S{3})\S*/\1/10g' file