Podczas zabawy awk
przyszedłem wykonać:
ls -la >> a.txt ; awk {'print $5 $1'} a.txt ;
Daje to wyniki takie jak:
53277-rw-------
52347-rw-------
Jak mogę uzyskać odstęp między tymi dwoma przyjaciółmi produkcji?
command-line
text-processing
awk
rɑːdʒɑ
źródło
źródło
ls
. To prędzej czy później ugryzie cię w plecy.print $5 $1
awk {'print $5 $1'} a.txt
). Pytają, jak umieścić spację między polem nr 1 a polem nr 5.Odpowiedzi:
Po prostu zmień linię na
to powinno wydrukować wynik ze spacjami.
Mam nadzieję że to pomoże.
Edytować:
Jak sugeruje McNisse , możesz użyć printf, który zapewni ci dobry format wyjściowy
źródło
printf
funkcja zapewnia lepszą kontrolę, szczególnie jeśli chcesz formatować liczby.printf("%s\t%s\n", $5, $1)
5s
znaczy inawk {'printf ("%5s\t%s\n", $5, $1)'}
Inna technika specyficzna dla awk, użyj „separatora pola wyjściowego”
Przecinek jest tutaj kluczowy.
źródło
$1
przejście do nowej liniiProstym sposobem na uzyskanie zakładek jest:
źródło
Wiem, że to stary wątek, ale dopiero się uczę i uważam, że te posty są pomocne. Moim najlepszym rozwiązaniem było użycie gawk do wstawiania spacji między zmiennymi.
źródło
gawk
,mawk
lub jakikolwiek innyawk
, wszystkie wstawiają spacje, jeśli użyjesz przecinka, co mówi ta odpowiedź .ls -la | awk '{print $1, $9}'
. Jak powiedział Muru,gawk
nie jest to konieczne.Aby umieścić spację między argumentami, wystarczy dodać
" "
npawk {'print $5" "$1'}
.Jednak jest to nie zaleca się analizować dane wyjściowe
ls
polecenia , ponieważ nie jest niezawodny i wyjście jest dla ludzi, a nie skryptów. Dlatego używaj alternatywnych poleceń, takich jakfind
lubstat
.Oto przykład użycia GNU
stat
:który wydrukuje ci wyjście przyjazne dla maszyny (w zwięzłej formie), dzięki czemu możesz uzyskać dokładnie to, czego potrzebujesz. Następnie użyj
-c
używać określonego formatu, lub użyćawk
,cut
alboread
uzyskać odpowiednie kolumny.Sprawdź
stat --help
dalsze opcje. Na przykład, aby wydrukować dzień modyfikacji, sprawdź ten przykład .źródło