我有一个包含交易信息的修复日志,例如:
==> 8=FIX4.2|39=1|55=IBM|6=138
==> 8=FIX4.2|39=1|55=APPL|6=130
==> 8=FIX4.2|39=1|55=GE|6=11
我试图grep输出,以便我可以得到这样的东西:
IBM 138
APPL 130
GE 11
其中第一列是IBM,第二列是138。
我正在尝试这个:
grep 39=1 some.log | tr "|" "\n" | egrep '(^55=|^6=)'
但这只会在不同的行上获得股票/价格,如下所示:
IBM
AAPL
GE
138
130
11
是否有bash / unix one liner会得到这个?
答案 0 :(得分:2)
试试这个:
awk -F '[|=]' '{printf "%-6s %s\n", $8, $10}' file
输出:
IBM 138 APPL 130 GE 11
答案 1 :(得分:1)
您可以使用awk
:
awk -F '(55|6)=' -v OFS='\t' '{sub(/\|$/, "", $2); print $2, $3}' file
IBM 138
APPL 130
GE 11
答案 2 :(得分:0)
GNU grep and paste:
grep -oP '\b(55|6)=\K[^|]+' file | paste - -
答案 3 :(得分:0)
你可以试试这个:
use std::fmt as f;
impl f::Display for Something {
fn fmt(&self, f: &mut f::Formatter) -> f::Result {
write!(f, "{}", self.count)
}
}