我有一堆文件,我可以通过以下命令获得(其中EXT
是扩展名):
oIFS=$IFS
IFS=$'\n'
array=$(find . -iregex '.*\(EXT\)' -print)
for file in ${array[@]}; do
echo "$file"| cut -f1 -d" - "
done
IFS=oIFS
文件名格式如下:PARTONE - PARTTWO
其中第一部分是任何字符(但not a dash [-]
,第二部分是任何字符,可以包含短划线)
有没有办法让PARTONE和PARTTWO成为他们自己的变量?目前,(我相信)由于空间是分隔符的一部分,它不起作用,我收到以下错误cut: bad delimiter
答案 0 :(得分:1)
以下是众多方法之一:
oIFS=$IFS
IFS=$'\n'
array=$(find . -iregex '.*\(EXT\)' -print)
for file in ${array[@]}; do
PART_ONE=`echo $file | sed "s/ - .*$//"`
PART_TWO=`echo $file | sed "s/^[^-]* - //"`
done
IFS=$oIFS
从第一部分中删除./
前缀(假设一个始终存在):
PART_ONE=`echo $file | sed "s/^\.\/\([^-]*\) - .*$/\1/"`
要从第二部分删除扩展程序:
PART_TWO=`echo $file | sed "s/^[^-]* - \(.*\)\.[^\.]*$/\1/"`