在我的档案中,我有以下结构: -
A | 12 | 10
B | 90 | 112
C | 54 | 34
我要做的是我必须添加第2列和第3列,并在第1列打印结果。
输出: -
A | 22
B | 202
C | 88
我检索了两列,但不知道如何添加
我做的是: -
cut -d ' | ' -f3,5 myfile.txt
如何添加这些列并显示。
答案 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接受输入文件名作为参数。