Как заменить случайные строки с помощью sed. Например, если у меня есть текстовый файл, как это:

EF125353.1 подлежит замене 1

EF125353.1 подлежит замене снова 2

EF125353.1 подлежит замене и т.д. 3

И я хотел бы заменить что-либо после .1 до конца строки с пробелом или ни с чем, чтобы получить окончательный файл, подобный этому:

EF125353.1

EF125353.1

EF125353.1

Я использую Unix в OS X

Спасибо

2 ответа2

1

В вашем простом случае мое решение будет

cat file | cut -d' ' -f1

-d' ' указывает cut, что разделитель между полями - это пробел. -f1 говорит вырезать оставить первый столбец.

Если вы действительно хотите использовать sed, который я бы не предложил для этого очень простого случая, вы можете сделать

cat file | sed -e 's/\.1.*/.1/'

-e сопровождается командой для выполнения. s/<search-string>/<replace-string>/ ищет <строку-поиска> и заменяет ее на <строку-замены>. Строка поиска является регулярным выражением. Это означает, что \.1.* Интерпретируется как точка, за которой следует '1', за которым следует любое число ('*') любых символов ('.«). Это будет заменено на «.1» (здесь не нужно бежать).

0

Вы также можете использовать awk:

awk '{print $1}' input.txt > output.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .