我有一个shell脚本,它需要获取一个.so
并获取其所有前缀,其中前缀是名称的一部分,直到".so"
部分+下一部分直到"."
例如:对于'example.so.1'
,我们将使用以下前缀:'example.so', 'example.so.1'
我有一个python(3)代码来实现这一点,我想得到一个bash等价物
Python源代码的Bash包装器:
#!/bin/bash
dst='/tmp'
for src in 'example.so' 'example.so.1' 'example.so.1.2' 'example.so.1.2.3'; do
python3 -c "
import os, sys, itertools as it, re;
so_path = os.path.abspath(sys.argv[1]);
dst = sys.argv[2];
so = os.path.basename(so_path);
so_name = so.split('.')[0];
regex = '\.\w+';
for suffix in it.accumulate(re.findall(regex, so)):
dst_so = os.path.join(dst, so_name + suffix)
print('src: {}. dst: {}'.format(so_path, dst_so))
" "${src}" "${dst}";
done
这是我在bash中使用awk的试用(它还没有完成,只打印源代码。我一直在调整它,但无法让它完全按照我的要求执行):
#!/bin/bash
dst='/tmp'
delimiter='.'
for src in 'example.so' 'example.so.1' 'example.so.1.2' 'example.so.1.2.3'; do
for nubmer_of_delimiters in `seq $(echo ${src} | grep ${delimiter} | wc -l)`; do
echo ${src} :: ${src} | awk -F. '{print $nubmer_of_delimiters}';
done
done
实现这一目标的最佳方式是什么?(我猜是awk
,尽管我确实尝试使用了一些ogcut, sed, etc.
bash代码必须在干净的ubuntu18上运行,无需额外安装
看起来你应该可以只刮一圈。
给定
f=example.so.1.2.3
,请尝试如果您想先使用较小的,请将其通过排序
相关问题 更多 >
编程相关推荐