Вырезать файл, разграниченный на число с одной или несколькими цифрами

Пробелы в именах файлов могут быть непростыми, но я думаю, что это может помочь.

Вместо cat в файлах для извлечения попробуйте пропустить их через xargs , заменив символ NULL на EOL.

Что-то вроде

tr '\n' '\0' < list-of-files | xargs -0 -I{} sh -c 'cpio -icuBdmv "{}" < preserved.cpio'

должно помочь.

3
04.09.2017, 20:40
4 ответа
$ 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]', чтобы также избавиться от пробелов перед цифрой.

9
27.01.2020, 21:08

И решение 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 
5
27.01.2020, 21:08

GNU grep:

grep -Po '.*?(?=\s*\d)' file
1
27.01.2020, 21:08

С помощью GNUgrep

grep -o '^[^[:digit:]]*' file

(обратите внимание, что он ничего не выводит для таких строк, как 123foo, то есть строк, в которых левая часть цифр пуста ).

1
27.01.2020, 21:08

Теги

Похожие вопросы