Чтобы напечатать все алфавиты (кроме цифр) в данной строке [закрыто]

-1
07.05.2018, 12:54
3 ответа

Ничего не зная о формате, это работает для двух указанных вами значений:

while read
do
    echo "${REPLY%-*-*}"
done < file1
0
28.01.2020, 05:08

Предположим, вам нужны все символы в строке, пока вы не найдете цифру. А затем исключите необязательный -перед этой цифрой:

sed 's/-\{0,1\}[[:digit:]].*//' your-file

(на GNU sed, вы можете заменить \{0,1\}на \?. Или sed -E 's/-?[[:digit:]].*//'с некоторым ).

Это должно обрабатывать ваши примеры, хотя без подробностей я не могу сказать, что оно будет обрабатывать все в вашем файле.

Если вы хотите изменить свой файл в -месте, с некоторыми реализациями sed, вы можете добавить -i.bakк команде sed (резервирует файл в your-file.bak, вносит изменения вyour-file)или добавьте > new-fileв конце, чтобы написать new-fileс результатами

1
28.01.2020, 05:08

Чтобы удалить все после первой цифры, перед которой стоит тире (, а также цифру тире -):

sed 's/-[0-9].*//' file

С данными, указанными в вопросе в файле file, это генерирует

Edward
Andrew-James

Удаление только цифр (, как указано в заголовке вопроса ), можно выполнить с помощью tr -d '0-9' <file, но это приведет к

Edward--singer
Andrew-James--writer

... это не то, что вам нужно.

1
28.01.2020, 05:08

Теги

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