2012-11-20 32 views
1

的兩個數字在我的文件我有以下結構: -檢索和添加文件

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

我所要做的就是我要加列2和第3列,並打印帶有列1

結果

輸出: -

A | 22 
B | 202 
C | 88 

檢索到兩列,但不知道如何添加 我所做的是: - cut -d ' | ' -f3,5 myfile.txt 如何添加這些列並顯示。

回答

2

你可以用awk輕鬆做到這一點。

awk '{print $1," | ",($3+$5)'} myfile.txt 也許會工作。

+1

我會說'BEGIN {FS =「|」}'並使用'$ 1','$ 2'和'$ 3'會更直觀,更強大。 – Amadan

+0

或使用'-F'|'' –

4

一個bash的解決方案:

#!/bin/bash 

while IFS="|" read f1 f2 f3 
do 
    echo $f1 "|" $((f2+f3)) 
done < file 
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 

說明:

  • awk:調用awk工具
  • BEGIN{...}FS代表字段分隔符:開始從文件
  • FS="|"讀取行之前做的事情。把它看作分隔符,將文件的每一行分隔成若干個字段
  • OFS="| "OFS代表輸出字段分隔符。與上述相同的想法,但輸出。 FS =/= OFS在這種情況下由於格式化
  • {print $1 OFS $2+$3}:對於awk讀取的每行,打印第一個字段(字母),後跟由OFS指定的分隔符,然後是字段2和字段3的和。
  • input_filename:awk在此處接受輸入文件名作爲參數。