修剪命令行unix上的输出

时间:2016-08-17 20:35:59

标签: linux bash

我从命令行输出,我需要修剪并获得所需的输出,如下所示:

输入:

['0x66']
['0x66', '0x137', '0xa9']
[]
['0x148', '0x11a', '0x167', '0x151', '0xe6']
[]
['0x171', '0xe2', '0x174']

输出:

0x66
0x66
0x137
0xa9
0x148
0x11a
0x151
0xe6

我使用过: tr -d" []'," 但删除后,linux中有任何命令,如python中的.split()。

[编辑]在查看tr的手册页后,我看到有一个翻译选项,所以我将整个输出管道输送到:

output | tr -d "[]' | tr " " "\n"

3 个答案:

答案 0 :(得分:4)

我建议使用简单的grep -o(仅显示匹配的文字):

grep -o "0x[^']*" file

0x66
0x66
0x137
0xa9
0x148
0x11a
0x167
0x151
0xe6
0x171
0xe2
0x174

答案 1 :(得分:0)

如何管道:

| tr -d "[]' " | tr ',' '\n' | sed -n '/^.\+$/p'

它首先删除无用的字符,然后"分裂"字段到他们自己的行,然后删除任何空的。

答案 2 :(得分:0)

使用trsed的一点帮助:

tr -d "[]' " <file.txt | sed -n '/./ p' | tr ',' '\n'       
  • tr -d "[]' " removes all [,]`,数据中的空格和单引号

  • sed部分匹配至少包含一个字符的行,以省略空行

  • 然后tr ',' '\n'将所有逗号转换为换行符

% cat file.txt
['0x66']
['0x66', '0x137', '0xa9']
[]
['0x148', '0x11a', '0x167', '0x151', '0xe6']
[]
['0x171', '0xe2', '0x174']

% tr -d "[]' " <file.txt | sed -n '/./ p' | tr ',' '\n'       
0x66
0x66
0x137
0xa9
0x148
0x11a
0x167
0x151
0xe6
0x171
0xe2
0x174