[Bash] polecenie cut

Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
0

Poleceniem ls -l wyswietlilam interesujaca mnie zawartosc i wpisalam ją do pliku tekstowego. Później próbowałam poleceniem cut wyciąć 5 kolumnę więc wyglądało to tak
cut - f5 lsl.txt > kol5.txt

Niestety zawartość nowego pliku to nadal to cała lista z polecenia ls -l.

Zgodnie z przykładem w skrypcie powinno działać. Co robię nie tak?

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
1

Strzelam, że pliku lsl.txt masz złe separatory. Domyślnie jest to tab. Zrób sobie dowolny plik z kolumnami oddzielonymi tabami i zobaczysz, że działa.

Pyxis
  • Rejestracja: dni
  • Ostatnio: dni
2

Samo podanie separatora jako spacji nie pomoże, bo czasem występuje więcej spacji niż jedna. Można się wspomóc tr:

Kopiuj
tr -s ' ' < lsl.txt | cut -d" " -f5

Albo opcjonalnie użyć awk:

Kopiuj
awk '{print $5}' lsl.txt
elwis
  • Rejestracja: dni
  • Ostatnio: dni
0

cut to bardzo toporne narzędzie. Lepiej poświęcić chwilę na AWK:

Kopiuj
ls -l | awk '{print $5}'
Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
0

@szweszwe: Niestety utworzenie innego pliku z kolumnami nie pomogło. Polecenie nadal nie działało. Ostatecznie musiałam zrobić nie na całych kolumnach a na kolejnych symbolach (czyli np. jeśli w kolumnach było po 4 znaki a interesowała mnie 4 kolumna to musiałam wpisać zakres od 16 do 20).

@Pyxis @elwis dzięki sprawdzę ale nie wiem czy będę mogła używać na zaliczeniu jeśli tego nie przerabialiśmy :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.