感谢您抽出时间回答这些问题。我有一个电话账单,我想通过bash处理。我使用grep,awk和sed来找到我需要的一些值,但我不知道如何找到其余的值。我使用grep在大文件中找到第一行代码,但是如果有更好的方法我可以使用它。这是我的例子。
garbage
garbage
Phone usage details for 777-555-1234
garbage
garbage
garbage
Total Long Distance 124.82
garbage
garbage
Total International 23456.01
garbage
garbage
Phone usage details for 777-444-0987
我需要在下一个数字之前抓取每个总数,然后添加它们,但我可以找出那个部分。如果我能得到如下结果,我会很高兴。
Phone usage details for 777-555-1234
Total Long Distance 124.82
Total International 23456.01
提前感谢您的任何帮助或意见。
答案 0 :(得分:0)
关注awk可能对你有帮助。
awk '
/Phone usage details for/ && flag{
printf("%s%s%.2f%s%.2f\n",val,"\nTotal Long Distance ",sum_long,"\nTotal International ",sum_inter);
sum_long=sum_inter=""
}
/Phone usage details for/{
val=$0;
flag=1;
next
}
flag && /Total Long Distance/{
sum_long+=$NF;
next
}
flag && /Total International/{
sum_inter+=$NF
}
' Input_file
输出如下。
Phone usage details for 777-555-1234
Total Long Distance 124.82
Total International 23456.01
答案 1 :(得分:0)
所有人都在这里学习,但是在你给他一个像123这样的解决方案之前,OP必须告诉他的尝试。 所以用sed。
sed -n '/Phone/{h;:A;n;/Total/!bA;H;:B;n;/Total/!bB;H;x;p}' infile