$ sed 1q /etc/passwd | awk '{split($0, a, ":"); print a[1]}'
root
$ echo 9/29/83 | awk '{split($0, date, "/"); print date[3]}'
83
$
Π ΡΠ°Π±Π». 4.5 ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ awk.
cos(expr) ΠΠΎΡΠΈΠ½ΡΡ expr exp(expr) ΠΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ expr getline() Π§ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ; Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 0 Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π°, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ 1 index(s1, s2) ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ s2 Π² s1; Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 0, Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° Π½Π΅ Π²Ρ ΠΎΠ΄ΠΈΡ int(expr) Π¦Π΅Π»Π°Ρ ΡΠ°ΡΡΡ expr; ΠΎΠΊΡΡΠ³Π»ΡΠ΅Ρ ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ length(s) ΠΠ»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ s log(expr) ΠΠ°ΡΡΡΠ°Π»ΡΠ½ΡΠΉ Π»ΠΎΠ³Π°ΡΠΈΡΠΌ expr sin(expr) Π‘ΠΈΠ½ΡΡ expr split(s, a, c) Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ s Π½Π° Π°[1] ... a[n] ΠΏΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ c; Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ n sprintf(fmt, ...) Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ fmt substr(s,m,n) ΠΠΎΠ΄ΡΡΡΠΎΠΊΠ° Π² n ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΡΠΎΠΊΠΈ s, Π½Π°ΡΠΈΠ½Π°ΡΡΠ°ΡΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° mΠ’Π°Π±Π»ΠΈΡΠ° 4.5: ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ awk
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΠ°ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠ°Ρ ΠΈΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ ΡΠΈΠΏΠ°
Susie 400
John 100
Mary 200
Mary 300
John 100
Susie 100
Mary 100
ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠΌΠΌΠ°ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ:
John 200
Mary 600
Susie 500
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° awk ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΈΠ·ΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ β Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². Π₯ΠΎΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ΅Π±Π΅ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π² awk Π»ΡΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΠΎΡΡΠΎΠΌΡ
{sum[$1] += $2}
END {for (name in sum) print name sum [name]}
Π·Π°Π΄Π°Π΅Ρ Π²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° n ΠΏΠ΅ΡΠ°ΡΠΈ ΡΡΠΌΠΌ Π΄Π»Ρ ΠΏΠ°Ρ ΠΈΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΠΏΠ°Ρ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠΌΡ ($1) ΡΠ»ΡΠΆΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ sum; Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° ΡΠΈΠΊΠ»Π° for Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² sum ΠΈ ΠΈΡ ΠΏΠ΅ΡΠ°ΡΠΈ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΡΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠΈΠΊΠ»Π° for ΡΠ°ΠΊΠΎΠ²:
for (ΠΏΠ΅ΡΠ΅ΠΌ in ΠΌΠ°ΡΡΠΈΠ²)
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
Π₯ΠΎΡΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²Π°ΠΌ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΌ, ΠΊΠ°ΠΊ ΡΠΈΠΊΠ» for ΡΠ·ΡΠΊΠ° shell, ΠΎΠ½ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Ρ. Π¦ΠΈΠΊΠ» ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°, Π° Π½Π΅ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "ΠΏΠ΅ΡΠ΅ΠΌ" ΡΠ°Π²Π½ΡΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ sort, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅Π½Π° ΡΠ»ΠΈ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
$ awk '...' | sort +1nr
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π·Π°Π½ΠΈΠΌΠ°Π» ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈ ΠΊ Π»ΡΠ±ΠΎΠΌΡ Π΄ΡΡΠ³ΠΎΠΌΡ, ΠΈ ΡΡΠΎΠ±Ρ ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Π»ΠΎ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΡΠ΅Π΄Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ²) ΠΎΡ ΡΠΈΡΠ»Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ, ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΠ°ΡΡΠΎΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ² Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅:
$ cat wordfreq
awk ' { for (i = 1; i <= NF; i++) num[$i]++ }
END {for (word in num) print word, num[word] }
' $*
$ wordfreq ch4.* | sort +1 -nr | sed 20q | 4
the 372 .CW 345 of 220 is 185
to 175 a 167 in 109 and 100
.PI 94 .P2 94 .PP 90 $ 87
awk 87 sed 83 that 76 for 75
The 63 are 61 line 55 print 52
$
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ for Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΈΠ· Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² num, ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ. (ΠΠ΅ ΠΏΡΡΠ°ΠΉΡΠ΅ $i, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π΅ Π² awk i-Π΅ ΠΏΠΎΠ»Π΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ° shell.) ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΈΡΠ°Π½, Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠΈΠΊΠ»Π΅ for ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈ ΡΠ°ΡΡΠΎΡΠ° ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.9Π ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ wordfreq ΠΏΠΎΠΏΠ°Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠ° .CW, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΡΠ»ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ. ΠΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΠ°ΠΊΠΈΡ Π½Π΅Π½Π°ΡΡΠΎΡΡΠΈΡ ΡΠ»ΠΎΠ²? ΠΠ°ΠΊ Π±Ρ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ tr, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° wordfreq ΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΏΡΠΎΠΏΠΈΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ ΡΡΡΠΎΡΠ½ΡΠ΅ Π±ΡΠΊΠ²Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅? Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ wordfreq, ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° ΠΈΠ· ΡΠ°Π·Π΄. 4.2 ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
sed 's/[β][β]*/\
/q' $* | sort | uniq -c | sort -nr
Π‘ΡΡΠΎΠΊΠΈΠ₯ΠΎΡΡ ΠΎΠ±Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΈ sed ΠΈ awk, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π·Π°Π΄Π°Ρ ΡΠΈΠΏΠ° Π²ΡΠ±ΠΎΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, ΡΠΎΠ»ΡΠΊΠΎ awk ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π·Π±ΠΈΠ²Π°Π΅Ρ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 80 ΠΏΠΎΠ·ΠΈΡΠΈΠΉ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ°, ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠ°Ρ 80 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ 80-Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°; Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ \ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΎΡΡΠ°ΡΠΎΠΊ ΡΡΡΠΎΠΊΠΈ. Π₯Π²ΠΎΡΡ ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ ΠΊ Π΅Π΅ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΠΎΠ½ΡΡ, Π° Π½Π΅ ΠΊ Π»Π΅Π²ΠΎΠΌΡ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΠ΅ΡΠ°ΡΠΈ, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ fold. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΡΠΎΠΊΠΈ ΠΈΠ· 20, Π° Π½Π΅ ΠΈΠ· 80 ΠΏΠΎΠ·ΠΈΡΠΈΠΉ:
$ cat ΡΠ΅ΡΡ
ΠΠΎΡΠΎΡΠΊΠ°Ρ ΡΡΡΠΎΠΊΠ°
Π‘ΡΡΠΎΠΊΠ° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π½Π΅Π΅
ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π΅ΡΠ΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°
$ fold ΡΠ΅ΡΡ
ΠΠΎΡΠΎΡΠΊΠ°Ρ ΡΡΡΠΎΠΊΠ°
Π‘ΡΡΠΎΠΊΠ° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π½Π΅Π΅
ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π΅ΡΠ΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅,
ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°
$
ΠΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ, ΡΡΠΎ Π² ΡΠ΅Π΄ΡΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ, Ρ ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° pr Π² System V Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈ ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅. ΠΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ fold ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ sed, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Π² ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈ ΡΡΠΎΠ±Ρ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΈΡΠ»Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² awk ΠΏΡΠΈΠ½ΡΠ» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΈ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ (ΡΡΠΎ ΡΠΈΠΏΠΈΡΠ½ΠΎ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ), Π½ΠΎ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠ±ΠΈΠ²Π°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΡΡΠΎΠΊΠΈ:
# fold: fold long lines
sed 's/\(->/ /g' $* | # convert tabs to spaces
awk '
BEGIN {
N = 80 # folds at column 80
for (i = 1; i <= N; i++) # make a string of blanks
blanks = blanks " "
}
{
if ((n = length($0)) <= N)
else {
for (i = 1; n > N; n -= N) {
printf "%s\\\n", substr($0,i,N)
i += N;
}
printf "%s%s\n" , substr(blanks, 1, N-n), substr($0, I)
}
} '
ΠΠ° ΡΠ·ΡΠΊΠ΅ awk Π½Π΅Ρ ΡΠ²Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ ΡΡΡΠΎΠΊ; ΡΡΡΠΎΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ»Π΅Π΄ΡΡΡ ΠΏΠΎΠ΄ΡΡΠ΄. ΠΠ½Π°ΡΠ°Π»Π΅ blanks ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ. Π¦ΠΈΠΊΠ» Π² ΡΠ°ΡΡΠΈ BEGIN ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠ΅ΠΉ: ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ ΡΠΈΠΊΠ»Π° ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ±Π΅Π» ΠΊ ΠΊΠΎΠ½ΡΡ ΡΡΡΠΎΠΊΠΈ blanks. ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠΈΠΊΠ»Π΅ Π²Ρ ΠΎΠ΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ°ΡΡΠΈ, ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°Π²ΡΠ°ΡΡΡ ΡΠ°ΡΡΡ Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ. ΠΠ°ΠΊ ΠΈ Π² ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ
if ((n=length($0)) <= N)...
Π΄Π»ΠΈΠ½Π° Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ n Π΄ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΊΠΎΠ±ΠΊΠΈ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.10ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ fold ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΡΠ² ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ» Π½Π° ΠΏΡΠΎΠ±Π΅Π»Π΅ ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π΅ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ, Π° Π½Π΅ ΠΏΠΎΡΡΠ΅Π΄ΠΈ ΡΠ»ΠΎΠ²Π°. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Π΄Π»Ρ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΠ»ΠΎΠ².
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΡΠΎ Π²Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π²Π°Π΅ΡΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ field n. ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ n-Π΅ ΠΏΠΎΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π΄Π°ΡΡ:
$ who | field 1
Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π½, ΠΏΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²Ρ ΠΎΠ΄ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ. Π―Π·ΡΠΊ awk ΡΠ²Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΎΡΠ° ΠΏΠΎΠ»Π΅ΠΉ. ΠΠ°ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° β ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½ΠΎΠΌΠ΅Ρ n ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ awk. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ:
$ awk '{print $'$1'}'
ΠΠ΄Π΅ΡΡ $1 ΠΎΡΠΊΡΡΡΠΎ (Π½Π΅ Π²Π½ΡΡΡΠΈ ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ ΠΊΠ°Π²ΡΡΠ΅ΠΊ), ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΠΏΠΎΠ»Ρ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ awk. ΠΡΠΈ ΠΈΠ½ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°Π²ΡΡΠΊΠΈ:
awk "{print \$$1}"
ΠΡΠ³ΡΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ \$ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ $, Π° $1 Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ n. ΠΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ Π°ΠΏΠΎΡΡΡΠΎΡΠ°ΠΌΠΈ (ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΌΠΈ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°Π²ΡΡΠ΅ΠΊ Π² ΡΠΈΠΏΠΈΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ awk ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² \.