kb 24.01.2012 17:30 c8541125

Первое слово строк без awk и регистрации
$ echo "123 456" | cut -d $' ' -f 1
123

1. werehuman 24.01.2012 17:31 Psi+

или cut -d' ' -f 1. Или sed -e 's/ .*$//'

2. kb → werehuman /1 24.01.2012 17:47 c8541125

sed :-( вот еще на жуйке красиво a="123 456"; echo ${a/ */}

3. werehuman → kb /2 24.01.2012 17:47 Psi+

не знал про такой башизм

4. kb → werehuman /3 24.01.2012 17:47 c8541125

ага, интересно

5. werehuman → kb /2 24.01.2012 17:48 Psi+

можно ещё echo 123 456 | tr ' ' '\n' | head -n1

6. kb → werehuman /5 24.01.2012 17:54 c8541125

да, киллер-способ :)

7. werehuman → kb /6 24.01.2012 17:55 Psi+

киллер-способ — это echo 123 456 | python -c 'from sys import stdin; for x in stdin.readlines(): print x.split()[0]'

8. werehuman → werehuman /7 24.01.2012 17:56 Psi+

извини, лучше так echo 123 456 | python -c 'for x in __import__("sys").stdin.readlines(): print x.split()[0]'

9. kb → werehuman /7 24.01.2012 17:56 c8541125

только я бы не делал readlines, а просто по stdin итерировал, потому что readlines неленивый

10. Sany 24.01.2012 17:56 Home

слова, к сожалению, табами тоже разделяются, но если только пробелами, тогде ещё есть способ, на сколько я знаю — не башизм: a="123 456"; echo ${a%% *}

11. werehuman → kb /9 24.01.2012 17:57 Psi+

там есть xreadlines

12. kb → werehuman /11 24.01.2012 17:57 c8541125

xreadlines — это шорткат к итератору.

13. Sany 24.01.2012 18:01 Home

ещё способ: a="123 456"; f() { echo $1; }; f $a;

14. werehuman → Sany /13 24.01.2012 18:02 Psi+

и ещё способ: a="123 456"; f() { f|f; f; }; f

15. werehuman → werehuman /14 24.01.2012 18:02 Psi+

опечатка. a="123 456"; f() { f|f&f; }; f

Do you really want to delete ?