【发布时间】:2016-11-01 10:33:24
【问题描述】:
我有 100 多个具有相同列名的制表符分隔文件。我想将所有文件中的一个列名(第 2 列)从“OLD”更改为“NEW”。文件中的其余内容保持不变。
谁能帮助我如何使用 awk 做到这一点?
例如。文件.txt
INFO OLD CONF DB COSMIC
NA NA 9 . 53
NA NA 10 . 192
NA NA 8 . 41
NA NA 8 . 87
NA NA 8 . 94
NA NA 8 . 92
NA NA 10 . 192
NA NA 10 . 47
NA NA 10 . 87
我想将“旧”更改为“新”:
INFO NEW CONF DB COSMIC
NA NA 9 . 53
NA NA 10 . 192
NA NA 8 . 41
NA NA 8 . 87
NA NA 8 . 94
NA NA 8 . 92
NA NA 10 . 192
NA NA 10 . 47
NA NA 10 . 87
我试过下面的脚本
#!/bin/bash
for file in 'ls PATH';
do
awk 'NR==1 && $2=="OLD"{$2=="NEW"}1' $file > temp && mv temp $file
done
【问题讨论】:
-
一个例子将有助于获得更多答案。
-
什么是分隔符?任何空白,仅限制表符?
-
它是一个制表符分隔的文件,包含三列“名称”“新”“值”。我无法在此处以表格格式提供示例数据。你能建议怎么做吗?
-
现在在上面的主帖中添加了一个示例文件。
-
$2=="NEW"应该是$2="NEW"