如何遍历目录中的所有文件并将第 5 列值除以 3?我希望对文件本身进行更改,并且应该跳过第一行,因为它是一个字段标题。字段用逗号分隔。
问问题
70 次
3 回答
1
这个脚本可以解决问题:
#!/bin/bash
script=$(basename $0)
find . -maxdepth 1 -type f | while IFS= read -r file
do
if [[ $(basename "$file") != "$script" ]]; then
awk 'NR>1{$5=$5/3}1' FS=, OFS=, "$file" > tmp
mv tmp "$file"
fi
done
于 2013-07-09T19:24:51.987 回答
1
perl 对于就地编辑很方便:
for f in *; do
perl -F, -i -lane 'BEGIN {$,=","} $F[4]/=3 if $.>1; print @F' "$f"
done
于 2013-07-09T19:39:13.797 回答
0
应该这样做(如果您将所有文件都放在一个目录下,如果没有,则使用 find):
for f in /path/to/dir/* ; do
awk 'BEGIN{FS=OFS=","}NR>1{$5=$5/3}1' "$f" > "$f".tmp && mv "$f".tmp "$f"
done
于 2013-07-09T19:24:43.590 回答