1

ディレクトリ内のすべてのファイルをループして、5 列目の値を 3 で割るにはどうすればよいですか? ファイル自体に変更を加えて、最初の行はフィールド ヘッダーであるため、スキップする必要があります。フィールドはコンマで区切られます。

4

3 に答える 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 に答える
0

これでうまくいくはずです(すべてのファイルが1つのディレクトリの下にある場合、そうでない場合は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 に答える