我有一个包含多个 KV 对的文件。
输入:
$ cat input.txt
k1:v1 k2:v2 k3:v3
...
我只对值感兴趣。键(名称)只是为了记住每个值的含义。本质上,我希望剪切
键,以便我可以绘制值列。
输出:
$ ...
v1 v2 v3
他们的单行 bash 命令可以帮助我实现这一目标吗?
更新
这就是我目前的做法(看起来很丑)
>> cat input.txt | python -c "import sys; \
lines = sys.stdin.readlines(); \
values = [[i.split(':')[1] for i in item] for item in \
[line.split() for line in lines]]; \
import os; [os.system('echo %s'%v) for v in \
['\t'.join(value) for value in values]]" > output.txt
最佳答案
这适合你吗?
sed -r 's/\w+://g' yourfile
测试:
kent$ echo "k1:v1 k2:v2 k3:v3"|sed -r 's/\w+://g'
v1 v2 v3
更新 好吧,如果您的 key 包含“-”等:请参见下文
kent$ echo "k1#-$%-^=:v1 k2:v2 k3:v3"|sed -r 's/[^ ]+://g'
v1 v2 v3
关于python - 如何从键值对列表中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11537642/