У меня есть следующая команда:
$ xlscat -i $file
и я получаю:
Excel File Name.xslx - 01: [ Sheet #1 ] 34 Cols, 433 Rows
Excel File Name.xlsx - 02: [ Sheet Number2 ] 23 Cols, 32 Rows
Excel File Name.xlsx - 03: [ Foo Factor! ] 14 Cols, 123 Rows
Мне нужно только имя листа, поэтому я делаю это:
$ xlscat -i $file 2>&1 | sed -e 's/.*\[ *\(.*\) *\].*/\1/' | while read file
> do
> echo "File: '$file'"
> done
И получите это:
File: 'Sheet #1'
File: 'Sheet Number2'
File: 'Foo Factor!'
Отлично! Все работает красиво. Как вы можете видеть из одинарных кавычек, я удалил лишние пробелы в конце имени файла. Теперь преобразуйте все оставшиеся пробелы в подчеркивание:
$ xlscat -i $file 2>&1 | sed -e 's/.*\[ *\(.*\) *\].*/\1/' | sed -e 's/ /_/g' | while read file
> do
> echo "File: '$file'"
> done
Теперь я получаю это:
File: 'Sheet_#1_____'
File: 'Sheet_Number2'
File: 'Foo_Factor!__'
А? Первый не показывал никаких пробелов, но второй, кажется, добавляет подчеркивание в конце файла. Что я не вижу?