【问题标题】:replace string on a specific column of multiple files from unix terminal从 unix 终端替换多个文件的特定列上的字符串
【发布时间】:2016-06-20 09:00:45
【问题描述】:

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

现在,我想用“RAC”替换第 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;

【问题讨论】:

标签: shell unix awk


【解决方案1】:

不要解析ls output,如图[ here ]

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

会做的

【讨论】:

  • @123 : 确实.. 更正了
  • 谢谢!它现在起作用了。感谢您的建议。
猜你喜欢
  • 2011-11-24
  • 1970-01-01
  • 2023-03-26
  • 2010-12-25
  • 2012-11-19
  • 1970-01-01
  • 2016-12-11
  • 2021-08-20
  • 1970-01-01
相关资源
最近更新 更多