我从命令行输出,我需要修剪并获得所需的输出,如下所示:
输入:
['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"
答案 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)
使用tr
和sed
的一点帮助:
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