linux - 如何在 Linux 中使用标题在制表符分隔的文件中添加行名
问题描述
我正在处理一个包含数千行和标题的表格文件。但是我必须在每一行中添加行名(行名代表行号)。我怎么能在linux中做到这一点?
我可以用 excel 做到这一点,但是文件太多,所以我希望我能写下 linux 命令来处理它。
我的文件看起来像这样。
parameter1 parameter2 paramter3
1.2 1.3 1.4
2.1 2.1 1.5
1.5 1.6 2.1
....
我想添加如下行名:
sim parameter1 parameter2 paramter3
AM_1_arp 1.2 1.3 1.4
AM_2_arp 2.1 2.1 1.5
AM_3_arp 1.5 1.6 2.1
....
我怎么能用linux命令完成这些?
解决方案
使用 awk:
awk 'NR==1{print "sim "$0;next}{print "AM_"NR-1"_arp "$0}' yourfile
说的是:
- 如果这是第一行(标题行)
NR==1
,则打印“sim”加上整行:print "sim "$0;
- 跳到下一行跳过程序的其余部分
next
- 对于遇到的任何其他行,打印“AM”加上行号
NR
加上“_arp”,然后是整行$0
。
如果目录中有许多文件需要执行此操作,则可以通过通配符引用它们,并且可以在 awk 中重定向输出:
awk 'NR==1{print "sim "$0 > FILENAME"_out";next}{print "AM_"NR-1"_arp "$0 > FILENAME"_out"}' ./yourfile*
推荐阅读
- solr - SOLR 同义词返回查询值
- python - pyautogui 中是否有与 cv2.minMaxLoc 等效的内容?
- processing - 处理中的 LineTrace 算法
- spring-boot - Keycloak - SpringBoot 适配器 - 是否可以更改重定向 URL?
- html - HTML 使用一个表格参数将所有列值居中对齐
- spring - 如何在单个 ConstraintValidator 中验证多个 @RequestParam?
- cgroups - Cgroups - 在命名空间级别控制资源
- powershell - Powershell 连接到共享点在线列表?
- python - 将标签分组并将其更改为 BIO 格式
- node.js - 开玩笑测试意外失败