grepを使用してファイルをフィルタリングし、フィルタリングされた行の特定の列に対して数学演算を実行し、最初のgrepフィルタのすべての行と数学演算が完了した行を返します( "value ="文字列を含む行のみを返します) )。
例:
grepを使用して文字列 "update"を含む行をフィルタリングするのは簡単です。わかりました。
出力:
... 列1列2修正する 4列5列 列1列2修正する 値 = 320 列1列2修正する 4列5列 列1列2修正する 値 = 210 ...
これで、文字列 "value=" を含む行を選択し、次の列に 25 を掛けます。ただし、文字列 "value=" が含まれていない行が表示されます。
出力:
... col1 col2 更新 col4 col5 col1 col2 アップデート 値 = 8000 col1 col2 更新 col4 col5 col1 col2 アップデート 値 = 5250 ...
私はifステートメントとawkを使ってみましたが、数学が完了した行だけが返されます。
答え1
awk
数学演算を実行するには、sed以上を使用する必要があります(sedとgrepは数学演算を実行できません)。
awkでgrepを変更することは、正規表現を使用するのと同じくらい簡単です/update/
。
awk '/update/ { if ($4=="value=") { $5*=25 }; print }' ./file
答え2
わかります:
awk '$4=="value=" {$5=($5*25)}1' foo