列の抽出された部分に対して操作を実行します。

列の抽出された部分に対して操作を実行します。

次のフィールドを含むテキストファイルがあります。

 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

コマンドがアクションを実行します。この場合、フィールドから数字を抽出する必要はありません。

これはデジタル変換メカニズムによるものですawkawkで文字列と数値を変換する方法、今すぐ:

文字列の数値プレフィックスを数値として解釈し、文字列を数値に変換します。 「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

関連情報