我正在使用一个名为“dsk”的程序来运行分析。我只对分析的几行感兴趣,并使用以下内容来检索这些行:
dsk -file <filename> | grep -Ei 'string1|string2|string3'
这给了我类似的东西:
string1 : 13
string2 : 46
string3 : 39
*编辑:重新格式化以更真实地输出(不受制表符限制,有 32 个空格、一个冒号以及字段之间的另一个空格)
但是,我希望输出看起来像这样:
string1 string2 string3
13 46 39
格伦提供的答案生成以下内容,可能是因为空格引起了混乱:
string1 string2 string3
: : :
答案1
答案2
@SteelDriver 链接的答案中提到的通用工具非常合适,@glenn jackman 的答案也是如此。
但是,如果您的数据格式如您所指示的那样简单 - 也就是说,如果片段中没有空格string1 .. stringN
- 那么以读取输入文件两次为代价,您也可以这样做:
dsk -file <filename> | grep -Ei 'string1|string2|string3' > tempfile.txt
readarray labels < <(awk '{print $1}' tempfile.txt)
readarray values < <(awk '{print $2}' tempfile.txt)
printf '%s\t' ${labels[@]}
printf '\n'
printf '%s\t' ${values[@]}
printf '\n'
这种格式可能有点简单,特别是可能无法像您希望的那样很好地对齐条目。但如果您需要的只是制表符分隔的输出,它就会这样做。