使用Bash脚本修改行上的特定列

时间:2016-05-18 01:17:44

标签: bash

我想修改我的制表符分隔文件,如下所示。

原始文件

a001.2[tab]xxx[tab]001[tab]zz
bbb[tab]ddd[tab]293[tab]kkjk
c054.9[tab]ccc[tab]786[tab]qq

修改过的文件

a001[tab]xxx[tab]001[tab]zz
bbb[tab]ddd[tab]293[tab]kkjk
c054[tab]ccc[tab]786[tab]qq

我想仅使用bash脚本删除第一列的十进制(例如a001.2到a001) 请告诉我该怎么办。
提前谢谢。

1 个答案:

答案 0 :(得分:2)

使用sed

sed -E 's/^([^\t]+)\.[^\t]+(.*)/\1\2/' file.txt

如果文件不大,您可以使用bash while循环参数扩展:

while IFS=$'\t' read i j; do echo "${i%%.*}"$'\t'"$j"; done <file.txt

示例:

$ cat file.txt  
a001.2  xxx 001 zz
bbb     ddd 293 kkjk
c054.9  ccc 786 qq

$ sed -E 's/^([^\t]+)\.[^\t]+(.*)/\1\2/' file.txt
a001    xxx 001 zz
bbb     ddd 293 kkjk
c054    ccc 786 qq

$ while IFS=$'\t' read i j; do echo "${i%%.*}"$'\t'"$j"; done <file.txt
a001    xxx 001 zz
bbb     ddd 293 kkjk
c054    ccc 786 qq