2010-02-23 3 views
5

У меня есть многострочный текстовый файл, где каждая строка имеет форматнайти и заменить из командной строки UNIX

..... Game #29832: ...... 

Я хочу, чтобы добавить символ «1» для каждого числа в каждой строке (которая отличается от каждая строка), знает ли кто-нибудь, как это сделать из командной строки?

Благодаря

ответ

4

Использование sed:

cat file | sed -e 's/\(Game #[0-9]*\)/\11/' 
+0

UUOC.' sed -e 's/\ (Game # [0-9] * \)/\ 11 /' file' – ghostdog74

+3

Достаточно честный. Некоторые привычки умирают тяжело. – anshul

1
sed 's/ Game #\([0-9]*\):/ Game #1\1:/' yourfile.txt 
+0

не работает: патч в 'ы/игры # ([0-9] *):/Game # 1 \ 1: /' handHistories1.txt СЭД : -e выражение # 1, char 31: неверная ссылка \ 1 на 's 'команда RHS – Aly

+0

@Aly, что работает с gnu sed. В зависимости от вашей версии sed удалите обратную косую черту перед (и) или посмотрите, есть ли у вас аргументы для вашей sed-версии, чтобы включить этот синтаксис –

+0

, вы отформатировали свою команду в качестве цитаты, поэтому обратные косые черты были съедены. Я сделал это как код. Кстати, OP хочет * добавить * '1'. –

6
sed -i -e 's/Game #[0-9]*/&1/' file 

-i является для редактирования на месте, и & средств независимо совпадающих с рисунка. Если вы не хотите перезаписывать файл, опустите флаг -i.