Powiedzmy, że w ciągu dnia wielokrotnie napotykasz następującą formę skolumnizowanego wyniku jakiegoś polecenia w bash (w moim przypadku z wykonania svn st
w moim katalogu roboczym Railsów):
? changes.patch
M app/models/superman.rb
A app/models/superwoman.rb
aby pracować z wyjściem twojego polecenia - w tym przypadku z nazwami plików - wymagany jest jakiś rodzaj analizy, aby druga kolumna mogła być użyta jako dane wejściowe dla następnego polecenia.
To, co robiłem, to awk
dostać się do drugiej kolumny, np. Gdy chcę usunąć wszystkie pliki (nie to jest typowy przypadek użycia :), zrobiłbym:
svn st | awk '{print $2}' | xargs rm
Ponieważ często to piszę, naturalne pytanie brzmi: czy istnieje krótszy (a więc fajniejszy) sposób osiągnięcia tego w bashu?
UWAGA: To, o co pytam, jest zasadniczo pytaniem o polecenie powłoki, mimo że mój konkretny przykład dotyczy mojego przepływu pracy svn. Jeśli uważasz, że przepływ pracy jest głupi i zasugeruję alternatywne podejście, prawdopodobnie nie zagłosuję na ciebie, ale inni mogą, ponieważ pytanie tutaj naprawdę brzmi, jak uzyskać wynik polecenia n-tej kolumny w bash, w najkrótszy możliwy sposób . Dzięki :)