检索并添加两个文件

时间:2012-11-20 06:07:53

标签: bash shell scripting

在我的档案中,我有以下结构: -

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

我要做的是我必须添加第2列和第3列,并在第1列打印结果。

输出: -

A | 22
B | 202
C | 88

我检索了两列,但不知道如何添加 我做的是: - cut -d ' | ' -f3,5 myfile.txt 如何添加这些列并显示。

3 个答案:

答案 0 :(得分:4)

Bash解决方案:

#!/bin/bash

while IFS="|" read f1 f2 f3
do
   echo $f1 "|" $((f2+f3))
done < file

答案 1 :(得分:2)

您可以使用awk轻松完成此操作。

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

答案 2 :(得分: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接受输入文件名作为参数。