【发布时间】:2016-01-21 21:20:12
【问题描述】:
我正在尝试从两个来源制作目录列表。另一个目录的条目后面可以有 -1 或 -2,我想删除它们。
ls 输出示例:
something.something.anything-1
stuff.stuff.stuff.morestuff-2
st.uf.f
我现在拥有的代码:
echo -e "\tDATA\t\t | \t\tSYSTEM"
for SYSTEM in `ls /system/app`; do
for DATA in `ls /data/app | sed 's/-1*$//' | sed 's/-2*$//'`; do
echo -n "$DATA | "
done
echo "$SYSTEM"
done
它工作得很好,但如果有更好的方法,我很好奇,因为我必须使用 sed 两次。而且我注意到这里并没有很多好的帖子可以使用命令从字符串中删除字符,这可能是分享您的想法的好地方。
更新:
更新后的代码:
echo -e "\tDATA\t\t | \t\tSYSTEM"
for SYSTEM in `ls /system/app`; do
for DATA in `ls /data/app | sed 's/-[[:digit:]]*$//'`; do
echo -n "$DATA | "
done
echo "$SYSTEM"
done
Wich 完美!
【问题讨论】:
-
Don't parse
ls。s/-[12]*$// -
哦,那很方便 :D 谢谢!
-
如果您只想删除
-1和-2而不是-12或-,请使用sed s/-[12]$// -
@karakfa 你不应该使用
-\?,因为它们也可能是积极的吗?