Bash,如何修改占位符后文件的所有行?

标签 bash shell token bash-completion

我有一个表文件,我想以这种方式修改:当我找到一个特定的占位符时,我希望在遇到新的占位符之前根据它修改下一行,然后下一行行将以其他方式修改等。

这是我的示例表:

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/

相关文章:

git - 您如何使用存储删除然后恢复非索引更改,而不会在 git 中发生 merge 冲突?

linux - bash 正在从 Linux 中的日期格式中吃掉空格

bash - Shell 读取 *有时* 去除尾随定界符

bash - 如何使用docker exec命令在CLI容器中运行sh脚本?

c# - 在变化的位置插入琴弦

c++ - 调试断言失败文件、tokenScanner 和文本文件

bash - 使用 bash 变量参数调用 cmake

android - 如何使用 sendevent 或其他方式模拟来自后台服务的触摸?

bash - 在bash脚本中执行相对路径可执行文件

security - JWT有多安全?