2012-06-11 3 views
1

Как мы можем использовать СЭД, чтобы получить 4-х символов между «Install ID:» и первое пространство после XKCD, в основном я хочу, чтобы извлечь «XKCD» строку из негоСед извлечь до первого пробела после 2-го слова

Install ID:   XKCD (8426200,8179503) 

Я попытался с помощью -

echo "Install ID:   XKCD (8426200,8179503)" | sed -n 's/^.*ID:\(.*\)*$/\1/p' 

, но это дает мне «XKCD (8426200,8179503)» вместо того, чтобы просто XKCD. Я не могу понять, как передать космическую часть.

ответ

3

Несколько незначительных изменений в вашей попытке:

echo "Install ID:   XKCD (8426200,8179503)" | sed -n 's/^.*ID: *\([^ ]*\) .*$/\1/p' 

или

echo "Install ID:   XKCD (8426200,8179503)" | awk '{print $3}' 
0
test="Install ID:   XKCD (8426200,8179503)" 
echo $test | sed -re 's/^.*\:\s+([A-z]{4}).*/\1/' 

Или: игнорировать все, перед двоеточием, игнорировать пробелы после двоеточия, получить четыре символы после пространства, а затем игнорировать все потом. Если ваши персонажи содержат числа или другие вещи, которые он в настоящее время терпит неудачу, хотя (вам нужно добавить их в список в квадратных скобках).

+0

Спасибо !! Я пробовал делать - sed -n 's /^.* ID: * \ ([^] * \). * $/\ 1/p' , но я получаю выражение sed: -e # 1, char 24 : Недопустимый конец диапазона " –

+0

-re ставит sed в режиме расширенного регулярного выражения (недоступно в некоторых системах, хотя, надеюсь, оно на вашем). Очень полезно, когда оно доступно ... – Soz

+0

Благодарим за разъяснение об этом –

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