0

私はスクリプト言語を初めて使用します。

今、私はファイルを持っています、その中には:

>   A1 B1 C1
>   A2 B2 C2
>   A3 B3 C3

シェルスクリプト(bash)を使用して、ファイルを要素ごとに読み取りたいだけです。次に、要素A1、A2、およびA3の計算を行い、それらを新しいファイル(または古いファイル)に書き戻します。したがって、新しいファイルは次のようになります(計算結果がD1、D2、およびD3であると仮定します)。

 D1 B1 C1
 D2 B2 C2
 D3 B3 C3

計算は、コマンド「date -d @(A's value)」によって、Unixエポック時間(Aの値)を人間が読める時間(Dの値)に変換することです。

私はawkコマンドを使おうとしています:

awk '{$1=`date -d @$1`}' test.txt

しかし、構文エラーがあるようです:>エラーは次のとおりです:

awk: {$1=`date -d @$3`}
awk:     ^ invalid char '`' in expression
4

2 に答える 2

2

あなたの要件はとても不明確です! 何の計算だったの?

例を示します。お役に立てば幸いです。

kent$  cat test.txt
100 B1 C1
200 B2 C2
300 B3 C3

# in this example, the "calculation" is getting the squre of A1
kent$  awk '{$1*=$1}1' test.txt
10000 B1 C1
40000 B2 C2
90000 B3 C3

#If you want to get the result in a newfile.txt, do this:

kent$  awk '{$1*=$1}1' test.txt >newfile.txt

#then

kent$  cat newfile.txt 
10000 B1 C1
40000 B2 C2
90000 B3 C3

編集

dateここで、awkで呼び出す方法の例を示します。

kent$  echo "1359579362 B1 C1"|awk '{"date -d @"$1|getline $1}1'                                                                                                            
Wed Jan 30 21:56:02 CET 2013 B1 C1

それがあなたが探しているものだと思います。

幸運を。

于 2013-01-30T20:29:41.793 に答える
1

これで gawks の組み込み時間関数の代わりに UNIX 日付を使用する必要がある場合は、すべてシェルで実行します。

while read -r secs rest
do
   echo "$(date -d @"$secs") $rest"
done < test.txt

ただし、可能であれば gawk を使用してください。

于 2013-01-31T01:31:18.887 に答える