在我的文件中,我有以下结构:-
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 在这里接受输入文件名作为参数。