我有一个表文件,我想以这种方式修改:当我找到一个特定的占位符时,我希望在遇到新的占位符之前根据它修改下一行,然后下一行行将以其他方式修改等。
这是我的示例表:
chr2.0 46580 46730 A_206699
chr2 46580 46730 A_206949
chr2 47020 47170 A_206699
chr2 47020 47170 A_206949
chr2.1 1680380 1680530 A_206997
chr2 1697600 1697750 A_206956
chr2 1697600 1697750 A_206963
chr2 1697600 1697750 A_206966
chr2.2 1697600 1697750 A_206980
chr2 1697600 1697750 A_206981
chr2 1697600 1697750 A_206982
chr2 1697600 1697750 A_206983
..................................
chr2.9 1748280 1748430 A_206982
chr2 1748280 1748430 A_206983
chr2 1748280 1748430 A_206984
chr2 1748280 1748430 A_206986
chr2 1748280 1748430 A_206987
我想要一个 bash 脚本来接受此输入并生成以下输出:
chr2.0 46580 46730 A_206699
chr2.0 46580 46730 A_206949
chr2.0 47020 47170 A_206699
chr2.0 47020 47170 A_206949
chr2.1 1680380 1680530 A_206997
chr2.1 1697600 1697750 A_206956
chr2.1 1697600 1697750 A_206963
chr2.1 1697600 1697750 A_206966
chr2.2 1697600 1697750 A_206980
chr2.2 1697600 1697750 A_206981
chr2.2 1697600 1697750 A_206982
chr2.2 1697600 1697750 A_206983
...................................
chr2.9 1748280 1748430 A_206982
chr2.9 1748280 1748430 A_206983
chr2.9 1748280 1748430 A_206984
chr2.9 1748280 1748430 A_206986
chr2.9 1748280 1748430 A_206987
我该怎么办? 有什么建议么?谢谢!
编辑:占位符是该行第一个元素中的点。
最佳答案
您可以使用它来执行您想要的操作(尽管遗憾的是它不会保留列间距)。
awk '$1 ~ /\./ {f=$1} {$1=f; print}' input
通过管道将其传输到column -t
以获取(略有不同)列式输出。
关于Bash,如何修改占位符后文件的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159611/