2013-11-12 5 views
1

У меня есть скрипт bash, и я начал писать журнал изменений, чтобы отслеживать изменения.bash get first word last line

Я добавил в скрипт функцию, которая перекликается "Script version --> " Но я должен ее вручную отредактировать.

Так что я бы нужна функция, чтобы получить первое слово до места последней строки и сохранить его как $CURRENTVERSION

синтаксис Changelog является:

v-0.3.2 Added x, y. 

v-0.3.2.1 Fixed y. 

v-0.4 Added z. 

Вкратце я должен был бы хранить v-0.4 в $CURRENTVERSION

ответ

4

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

awk '{w=$1} END{print w}' file 

ИЛИ с использованием СЭД:

sed -n '$s/^\([^ ]*\).*$/\1/p' file 
+0

LOL СЭД является слишком сложным, есть вики somewere? (Мне не нравится слишком много, чтобы использовать то, что я не знаю/понимаю довольно хорошо) Танки к примеру awk, который вы мне сказали, я бы использовал это: currentver = ('awk 'END {print}' changelog.txt ') Причина: мне нужно оставить пустым 1 доллар, а затем currentver [0] будет тем, что мне нужно; Это хороший способ? –

+0

Да, awk намного проще. – anubhava

+0

не будет '-r' с' sed' быть лучше? это не потребует ускользающих скобок. – jkshah

2

Если вам не нравится AWK или СЭД, вы можете сделать это:

tail -n1 file | cut -d' ' -f1 

Но на самом деле, AWK и СЭД являются лучшими инструментами для работы ...

+0

YEAH i tink Я бы использовал 'awk 'END {print w}' changelog.txt | cut -d '' -f1' –

+0

Единственный раз, когда я не использовал awk или sed для этого, было бы, если бы я был на встроенной системе, где они не были установлены, например. – Flimzy

2

Баш:

read CURRENTVERSION rest < <(tail -1 changelog) 
+0

Танки это также является действующей альтернативой! –

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