bash - 使用 awk 在文件末尾添加常量值作为列
问题描述
我想在 bash 文件的每一行末尾添加一个具有恒定值的列,同时选择列,进行数学运算,并将字段分隔符(从我认为只是制表符)更改为空格。
我的输入文件:
10:100968448:T:AA 0.3519 10 100968448 t aa 1.0024 0.01 0.812
10:101574552:A:ATG 0.4493 10 101574552 a atg 0.98906 0.0097 0.2585
10:102244152:A:AG 0.2008 10 102244152 a ag 0.996705 0.0114 0.7701
10:102290698:A:AG 0.1899 10 102290698 a ag 0.993024 0.0114 0.5431
10:104999458:T:TG 0.3449 10 104999458 t tg 0.956763 0.0101 1.149e-05
如果我将常量放在倒数第二列:
awk -v OFS=" " 'BEGIN { FS = "\t" } ; {print $1, $5, $6, log($7)/log(10), '105318', $9}' input
有用:
10:100968448:T:AA t aa 0.00104106 105318 0.812
10:101574552:A:ATG a atg -0.00477736 105318 0.2585
10:102244152:A:AG a ag -0.00143336 105318 0.7701
10:102290698:A:AG a ag -0.00304026 105318 0.5431
10:104999458:T:TG t tg -0.0191956 105318 1.149e-05
但是当我尝试将常量放在文件末尾时,我需要它:
awk -v OFS=" " 'BEGIN { FS = "\t" } ; {print $1, $5, $6, log($7)/log(10), $9, '105318'}' input
它并没有真正起作用(它将常量添加到第一个字段):
10531868448:T:AA t aa 0.00104106 0.812
10531874552:A:ATG a atg -0.00477736 0.2585
10531844152:A:AG a ag -0.00143336 0.7701
10531890698:A:AG a ag -0.00304026 0.5431
10531899458:T:TG t tg -0.0191956 1.149e-05
我什至尝试使用它工作的文件,改组列,并将常量随机添加到某个地方......我在这个文件上使用了dos2unix,认为其中可能有一些奇怪的字符,但问题仍然存在。当我使用逗号作为输出字段分隔符时,我看到在文件末尾生成了多个逗号(当我尝试将常量作为最后一列包含时)。
为了澄清,所需的输出:
10:100968448:T:AA t aa 0.00104106 0.812 105318
10:101574552:A:ATG a atg -0.00477736 0.2585 105318
10:102244152:A:AG a ag -0.00143336 0.7701 105318
10:102290698:A:AG a ag -0.00304026 0.5431 105318
10:104999458:T:TG t tg -0.0191956 1.149e-05 105318
有任何想法吗?
解决方案
您的输入文件有 dos 行结尾。dos2unix
使用或类似工具删除回车符。
您看到的输出是$9
awk 中的字段具有回车符,因此当您添加字段时,光标会在打印最后一个字段之前移动到行首。
10:100968448:T:AA t aa 0.00104106 105318 0.812<CR> 105318
CR 在打印时将光标位置移动到行首,因此您会看到:
10531868448:T:AA t aa 0.00104106 105318 0.812
推荐阅读
- sql - 如何识别红移中的序列模式
- python-3.x - 根据用户输入递归打印“man”、“eater”
- node.js - Openshift Node.JS 容器,502 bad gateway 错误
- python - Django 错误:apps.get_models() 返回空,无法进行查询或对模型执行任何操作
- ios - 如何通过单击打开带有标准 iOS 画廊的图像?
- amazon-sagemaker - 使用 amazon sagemaker / blazingtext 模型基于词向量反向查找词
- javascript - 如何防止axios请求将对象转换为字符串?
- windows - 在 Windows 中更改 URI 协议处理程序的名称
- asp.net-web-api - OWIN 在 Response 中添加额外的参数
- python - 似乎无法创建与我的菜单功能相关的新标签:/ 有没有更好的方法来构建我的代码或修复?