次のフィールドを含むテキストファイルがあります。
1; 3435; 45--XY
2; 3436; 15--XY
3; 3437; 23--XY
最初の列の数値部分を最後の列と掛けて出力ファイルに表示する必要があります。どうすればいいですか?私の考えではアッ最も直接的な順序になります。
試験を終えた:awk -F';' '{print substr($3,1,2)* $1}' input.txt > output.txt
答え1
シンプル
awk '{print $1 * $3}' input.txt
コマンドがアクションを実行します。この場合、フィールドから数字を抽出する必要はありません。
これはデジタル変換メカニズムによるものですawk
。awkで文字列と数値を変換する方法、今すぐ:
文字列の数値プレフィックスを数値として解釈し、文字列を数値に変換します。 「2.5」は2.5に変換され、「1e3」は1,000に変換され、「25fix」は25に変換されます。有効数字が0に変換されるため、解釈できない文字列です。
出力
45
30
69
答え2
アッ解決策:
awk -F';' '{ gsub(/[^0-9]+/,"",$NF); print $1*$NF }' input.txt > output.txt
gsub(/[^0-9]+/,"",$NF)
[^0-9]+
- 最後のフィールドから数字以外の文字をすべて削除します。$NF
コンテンツoutput.txt
:
45
30
69