我有一个文件夹中的n个文件列表有一些格式。
例如:ABCD.EXXXX.ZZZZ.ZZZZZ.txt
在上面的文件中ABCD.E对于所有文件都是通用的,ZZZZ.ZZZZ是用户希望字符串,我需要从所有文件中提取XXXX,需要向用户显示不同的XXXX ..有没有办法这样做。?帮助我这样做..提前致谢..
答案 0 :(得分:1)
使用ls -1制作相关文件的列表。将其导入sed以剥离开头'ABCD.E'。然后将它再次输入sed以删除第一个'。'之后的所有内容。
ls -1 ABCD\.E*\.txt | sed 's/^ABCD\.E//' | sed 's/\..*//'
或者,如果你想要更多地控制输出,你可以用awk
做第二位ls -1 ABCD\.E*\.txt | sed 's/^ABCD\.E//' | awk 'BEGIN{FS="."}{print "value =", $1, "user=", $2"."$3}'
答案 1 :(得分:0)
awk -F"."'{print $2}' filename
您可以尝试打印$1
,$2
,$3
...以更好地了解命令。
答案 2 :(得分:0)
您可以在shell中使用bash / ksh参数替换#
和%
。
function get_filename_section {
typeset f=${1:?}
typeset r=${f#ABCD.E}
print ${r%.ZZZZ.ZZZZZ.txt}
}
测试:
[[ $( get_filename_section ABCD.EXXXX.ZZZZ.ZZZZZ.txt ) == XXXX ]] &&
echo ok || echo no