我有100多个带有相同列名的制表符分隔文件。我想更改其中一个列名(第2列)来自' OLD'到'新'在批处理中的所有文件中。其余内容在文件中保持相同 任何人都可以帮我解决如何用awk做的事情吗?
例如。 file.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
答案 0 :(得分:0)
这是在sed
$ sed -i'.bak' -r '1s/([^\t]*\t)OLD/\1NEW/' file
如果您想要更改文件,sed
是更好的选择。你可以循环完成所有事情
$ for f in files; do sed -i'.bak' -r ... $f; done
awk
替代可以是
$ awk -v OFS='\t' 'NR==1 && $2=="OLD"{$2="NEW"}1' file > temp && mv temp file