2015-11-30 3 views
1

У меня есть .txt-файл, в котором последний столбец содержит числовой шаблон после текста типа «Бейкер 2-13» или «Чарли 03-144». Я хотел бы удалить все цифры в конце строки и просто оставить Бейкера и Чарли. Я попытался выполнить команду sed в конце моего заявления awk, без успеха.sed delete trailing pattern цифр

sed -E 's/[0-9]{1,2}"-"[0-9]{1,3}$//' 

Я попытался добавить пространство, и каретка вернулась к моей команде sed, но все равно не повезло.

sed -E 's/[0-9]{1,2}"-"[0-9]{1,3}\s\r$//' 

Я также попытался это, но она работает только тогда, когда я повторяю образец текста, он не работает на каждой линии моего файла .txt

echo "CHARLIE 02-157" | sed -E 's/[0-9]*([0-9])+\-[0-9]*([0-9])+$//' 

Есть идеи?

+0

Есть ли только две колонки? Вы хотите, чтобы исходный файл был заменен или просто сбрасывали результаты в STDOUT? – sjsam

+0

вот полный оператор: 'awk -F \ | '$ 7 ~/-OF | -AR/{print $ 7, $ 3, $ 4, $ 5}' qry_log.txt | sort -u | sed -E 's/[0-9] {1,2} - [0-9] {1,3} $ //' 'так четыре столбца, и он может заменить оригинал или вывод на новый файл. это не имеет большого значения в любом случае. –

+0

Из четырех столбцов вы просто хотите отфильтровать имена в одиночку. а? – sjsam

ответ

0

Простой СЕПГ решение

sed 's/[- 0-9]*$//' 

Это приведет к удалению завершающих тире, пробелы и цифры!

+1

Это будет сделано. Благодаря! –

2

Это должно работать:

sed -i.bak -E 's/[0-9]{1,2}-[0-9]{1,3}$//' file 

cat file 
Baker 
Charlie 

Вам не нужно цитировать дефис в шаблоне.

+0

Вспомните, что я использовал Bash на своем Mac. Я попробовал ваше решение и получил следующую ошибку: sed: -i не может использоваться с stdin –

+0

Я тоже на Mac, и это работает там. Скорее всего, вы не используете его с файлом и используете канал. В этом случае просто используйте 'sed -E 's/[0-9] {1,2} - [0-9] {1,3} $ //'' – anubhava

+0

Да, я контактировал инструкцию sed в конце оператора awk. Мне все еще не повезло. –

Смежные вопросы