在我的文件中,我具有以下结构:-
A | 12 | 10
B | 90 | 112
C | 54 | 34
我要做的是我必须添加第 2 列和第 3 列并用第 1 列打印结果。
输出:-
A | 22
B | 202
C | 88
我检索了两列,但不知道如何添加我所做的是:-
cut -d ' | ' -f3,5 myfile.txt
如何添加这些列并显示。
一个 Bash 解决方案:
#!/bin/bash
while IFS="|" read f1 f2 f3
do
echo $f1 "|" $((f2+f3))
done < file
您可以使用 awk 轻松完成此操作。
awk '{print $1," | ",($3+$5)'} myfile.txt
也许会工作。
你可以这样做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 在这里接受输入文件名作为参数。