Пробелы в именах файлов могут быть непростыми, но я думаю, что это может помочь.
Вместо cat
в файлах для извлечения попробуйте пропустить их через xargs
, заменив символ NULL на EOL.
Что-то вроде
tr '\n' '\0' < list-of-files | xargs -0 -I{} sh -c 'cpio -icuBdmv "{}" < preserved.cpio'
должно помочь.
$ awk -F'[0-9]' '{ print $1 }' file
John Smith
Amy Brown and Sally Williams
Sunny's
С помощью -F'[0-9]'
мы говорим, что цифры должны рассматриваться как разделители полей в входные данные, и с помощью print $1
мы выводим первое поле, разделенное цифрами.
Измените -F'[0-9]'
на -F' *[0-9]'
, чтобы также избавиться от пробелов перед цифрой.
И решение sed
:
echo "John Smith 1234 Main Street
Amy Brown and Sally Williams 9 Drury Lane
Sunny's 1000 Brown Avenue" | sed 's/ *[0-9].*$//'
John Smith
Amy Brown and Sally Williams
Sunny's
С помощью GNUgrep
grep -o '^[^[:digit:]]*' file
(обратите внимание, что он ничего не выводит для таких строк, как 123foo
, то есть строк, в которых левая часть цифр пуста ).