1

私のファイルには、次の構造があります:-

A | 12 | 10
B | 90 | 112
C | 54 | 34

私がしなければならないことは、列 2 と列 3 を追加し、列 1 で結果を出力することです。

出力:-

A | 22
B | 202
C | 88

2 つの列を取得しましたが、追加する方法がわかりません cut -d ' | ' -f3,5 myfile.txt

4

3 に答える 3

4

Bash ソリューション:

#!/bin/bash

while IFS="|" read f1 f2 f3
do
   echo $f1 "|" $((f2+f3))
done < file
于 2012-11-20T06:15:36.270 に答える
2

これは、awk を使用して簡単に行うことができます。

awk '{print $1," | ",($3+$5)'} myfile.txt おそらく動作します。

于 2012-11-20T06:09:21.203 に答える
1

あなたはこれを行うことができますawk

awk 'BEGIN{FS="|"; OFS="| "} {print $1 OFS $2+$3}' input_filename

入力:

A | 12 | 10
B | 90 | 112
C | 54 | 34

出力:

A | 22
B | 202
C | 88

説明:

  • awkawk:ツールを呼び出す
  • BEGIN{...}: ファイルからの行の読み取りを開始する前に行うこと
  • FS="|":FSフィールド セパレーターの略です。ファイルの各行をフィールドに区切る区切り文字と考えてください
  • OFS="| ": OFSOutput Field Separator の略です。上記と同じ考え方ですが、出力用です。FS =/= OFS この場合、フォーマットのため
  • {print $1 OFS $2+$3}:awk読み取る行ごとに、最初のフィールド (文字) を出力し、続いて で指定された区切り文字を出力しOFS、次にフィールド 2 とフィールド 3 の合計を出力します。
  • input_filename: awk は、ここで入力ファイル名を引数として受け入れます。
于 2012-11-20T06:15:56.573 に答える