从unix终端替换多个文件的特定列上的字符串

时间:2016-06-20 09:00:45

标签: shell unix awk

我有多个带有相同列名的制表符分隔文件。示例文件作为快照附加。

enter image description here

现在,我想用'RAC'替换coloumn 4中的每个'INV'。我写了以下awk代码。但它不能很好地工作。任何人都可以检查我的代码吗?

#!/bin/bash
path=path/to/dir/containing/the/files/to/be/processed
for file in `ls $path`
do
echo processing $file
awk '{ if ($4 == "INS") {$4 = "RAC"; print} else { print }; }'  $file>  ${file}_new.txt
done;

1 个答案:

答案 0 :(得分:1)

不要如[ here ]所示解析ls output

find /path/to/files -maxdepth 1 -type f -print0 | while read -r -d '' filename
do
awk '$4=="INV"{$4="RAC"}{print}' "$filename" > tempfile && mv tempfile "$filename"
done

会这样做