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 如何添加这些列并显示。

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

解释:

  • awk: 调用awk工具
  • BEGIN{...}: 在开始从文件中读取行之前做一些事情
  • FS="|"FS代表字段分隔符。将其视为将文件的每一行分隔为字段的分隔符
  • OFS="| "OFS代表输出字段分隔符。与上述相同的想法,但用于输出。FS =/= OFS 在这种情况下由于格式化
  • {print $1 OFS $2+$3}:对于awk读取的每一行,打印第一个字段(字母),后跟由 指定的分隔符OFS,然后是字段 2 和字段 3 的总和。
  • input_filename: awk 在这里接受输入文件名作为参数。
于 2012-11-20T06:15:56.573 回答