echo `expr index "$stringZ" C12` # 6
# ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° C.
echo `expr index "$stringZ" 1c` # 3
# ΡΠΈΠΌΠ²ΠΎΠ» 'c' (Π² #3 ΠΏΠΎΠ·ΠΈΡΠΈΠΈ) ΡΠΎΠ²ΠΏΠ°Π» ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ '1'.
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ strchr() Π² ΡΠ·ΡΠΊΠ΅ C.
ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ
${string:position}
ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ ΠΈΠ· $string, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ $position.
ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° $string -- "*" ΠΈΠ»ΠΈ "@", ΡΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ (Π°ΡΠ³ΡΠΌΠ΅Π½Ρ)[ 21 ], Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ $position.
${string:position:length}
ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ $length ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· $string, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ $position.
stringZ=abcABC123ABCabc
# 0123456789.....
# ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0.
echo ${stringZ:0} # abcABC123ABCabc
echo ${stringZ:1} # bcABC123ABCabc
echo ${stringZ:7} # 23ABCabc
echo ${stringZ:7:3} # 23A
# ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ 3 ΡΠΈΠΌΠ²ΠΎΠ»Π°.
# ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Ρ "ΠΏΡΠ°Π²ΠΎΠΉ" ΡΡΠΎΡΠΎΠ½Ρ ΡΡΡΠΎΠΊΠΈ?
echo ${stringZ:-4} # abcABC123ABCabc
# ΠΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΡΡΡΠΎΠΊΠ°.
# ΠΠ΄Π½Π°ΠΊΠΎ . . .
echo ${stringZ:(-4)} # Cabc
echo ${stringZ: -4} # Cabc
# Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
# ΠΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ±Π΅Π» "ΡΠΊΡΠ°Π½ΠΈΡΡΡΡ" ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ.
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Dan Jacobson, Π·Π° ΡΠ°Π·ΡΡΡΠ½Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ $string -- "*" ΠΈΠ»ΠΈ "@", ΡΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ Π΄ΠΎ $length ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²), Π½Π°ΡΠΈΠ½Π°Ρ Ρ $position.
echo ${*:2} # ΠΡΠ²ΠΎΠ΄ 2-Π³ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
echo ${@:2} # Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
echo ${*:2:3} # ΠΡΠ²ΠΎΠ΄ 3-Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π°ΡΠΈΠ½Π°Ρ ΡΠΎ 2-Π³ΠΎ.
expr substr $string $position $length
ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ $length ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· $string, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ $position.
stringZ=abcABC123ABCabc
# 123456789......
# ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 1.
echo `expr substr $stringZ 1 2` # ab
echo `expr substr $stringZ 4 3` # ABC
expr match "$string" '\($substring\)'
ΠΠ°Ρ ΠΎΠ΄ΠΈΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ $substring Π² $string, Π³Π΄Π΅ $substring -- ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
expr "$string" : '\($substring\)'
ΠΠ°Ρ ΠΎΠ΄ΠΈΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ $substring Π² $string, Π³Π΄Π΅ $substring -- ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
stringZ=abcABC123ABCabc
# =======
echo `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1
echo `expr "$stringZ" : '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1
echo `expr "$stringZ" : '\(.......\)'` # abcABC1
# ΠΡΠ΅ Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
expr match "$string" '.*\($substring\)'
ΠΠ°Ρ ΠΎΠ΄ΠΈΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ $substring Π² $string, Π³Π΄Π΅ $substring -- ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠΈΡΠΊ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ° $string.
expr "$string" : '.*\($substring\)'
ΠΠ°Ρ ΠΎΠ΄ΠΈΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ $substring Π² $string, Π³Π΄Π΅ $substring -- ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠΈΡΠΊ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ° $string.
stringZ=abcABC123ABCabc
# ======
echo `expr match "$stringZ" '.*\([A-C][A-C][A-C][a-c]*\)'` # ABCabc
echo `expr "$stringZ" : '.*\(......\)'` # ABCabc
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ
${string#substring}
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ, ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ , ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ $substring Π² ΡΡΡΠΎΠΊΠ΅ $string. ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΠΈ
${string##substring}
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ, ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ , ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ $substring Π² ΡΡΡΠΎΠΊΠ΅ $string. ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΠΈ
stringZ=abcABC123ABCabc
# |----|
# |----------|
echo ${stringZ#a*C} # 123ABCabc
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ.
echo ${stringZ##a*C} # abc
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ.
${string%substring}
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ, ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ , ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ $substring Π² ΡΡΡΠΎΠΊΠ΅ $string. ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ
${string%%substring}
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ, ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ , ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ $substring Π² ΡΡΡΠΎΠΊΠ΅ $string. ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ
stringZ=abcABC123ABCabc
# ||
# |------------|
echo ${stringZ%b*c} # abcABC123ABCa
# Π£Π΄Π°Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅. ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ° $stringZ.
echo ${stringZ%%b*c} # a
# Π£Π΄Π°Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅. ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ° $stringZ.
ΠΡΠΈΠΌΠ΅Ρ 9-11. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ, Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°
#!/bin/bash
# cvt.sh:
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅,
#+ ΠΈΠ· Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° MacPaint, Π² ΡΠΎΡΠΌΠ°Ρ "pbm".
# ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈΠ»ΠΈΡΠ° "macptopbm", Π²Ρ ΠΎΠ΄ΡΡΠ°Ρ Π² ΡΠΎΡΡΠ°Π² ΠΏΠ°ΠΊΠ΅ΡΠ° "netpbm",
#+ ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ Brian Henderson ( [email protected]).
# Netpbm -- ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Linux.
OPERATION=macptopbm
SUFFIX=pbm # ΠΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
if [ -n "$1" ]
then
directory=$1 # ΠΡΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π·Π°Π΄Π°Π½ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ΅Π½Π°ΡΠΈΡ
else
directory=$PWD # ΠΠ½Π°ΡΠ΅ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
fi
# ΠΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ".mac", ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
#+ ΡΠΎΡΠΌΠ°ΡΠ° MacPaint.
for file in $directory/* # ΠΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ².
do
filename=${file%.*c} # Π£Π΄Π°Π»ΠΈΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ".mac" ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°
#+ ( Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ '.*c' ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ
#+ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ '.' ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠ΅ΡΡ 'c',
$OPERATION $file > "$filename.$SUFFIX"
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² ΡΠ°ΠΉΠ» Ρ Π½ΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ
rm -f $file # Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ.
echo "$filename.$SUFFIX" # ΠΡΠ²ΠΎΠ΄ Π½Π° stdout.
done
exit 0
# Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅:
# --------
# Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ *Π²ΡΠ΅* ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅
# ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π» *ΡΠΎΠ»ΡΠΊΠΎ* ΡΠ΅ ΡΠ°ΠΉΠ»Ρ,
#+ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ".mac".
ΠΠ°ΠΌΠ΅Π½Π° ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ
${string/substring/replacement}
ΠΠ°ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ $substring ΡΡΡΠΎΠΊΠΎΠΉ $replacement.
${string//substring/replacement}
ΠΠ°ΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ $substring ΡΡΡΠΎΠΊΠΎΠΉ $replacement.
stringZ=abcABC123ABCabc
echo ${stringZ/abc/xyz} # xyzABC123ABCabc
# ΠΠ°ΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ 'abc' ΡΡΡΠΎΠΊΠΎΠΉ 'xyz'.
echo ${stringZ//abc/xyz} # xyzABC123ABCxyz
# ΠΠ°ΠΌΠ΅Π½Π° Π²ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊ 'abc' ΡΡΡΠΎΠΊΠΎΠΉ 'xyz'.
${string/#substring/replacement}
ΠΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΡΠΎΠΊΠΈ $replacement Π²ΠΌΠ΅ΡΡΠΎ $substring. ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΠΈ $string.
${string/%substring/replacement}
ΠΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΡΠΎΠΊΠΈ $replacement Π²ΠΌΠ΅ΡΡΠΎ $substring. ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ $string.
stringZ=abcABC123ABCabc
echo ${stringZ/#abc/XYZ} # XYZABC123ABCabc
# ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΠΈ
echo ${stringZ/%abc/XYZ} # abcABC123ABCXYZ
# ΠΠΎΠΈΡΠΊ Π²Π΅Π΄Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ
9.2.1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ awk ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, Bash-ΡΠΊΡΠΈΠΏΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° awk ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 9-12. ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊ
#!/bin/bash
# substring-extraction.sh
String=23skidoo1
# 012345678 Bash
# 123456789 awk
# ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ:
# Bash Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Ρ '0'.
# Awk Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Ρ '1'.
echo ${String:2:4} # Ρ 3 ΠΏΠΎΠ·ΠΈΡΠΈΠΈ (0-1-2), 4 ΡΠΈΠΌΠ²ΠΎΠ»Π°
# skid
# Π ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π² awk: substr(string,pos,length).
echo | awk '
{ print substr("'"${String}"'",3,4) # skid
}
'
# ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΡΡΡΠΎΠ³ΠΎ "echo" ΠΏΠΎ ΠΊΠ°Π½Π°Π»Ρ Π² awk, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΈΠΊΡΠΈΠ²Π½ΡΠΉ Π²Π²ΠΎΠ΄,
#+ Π΄Π΅Π»Π°Ρ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ, Π½Π΅Π½ΡΠΆΠ½ΡΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°.
exit 0
9.2.2. ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Section 9.3 ΠΈ Π² ΡΠ΅ΠΊΡΠΈΠΈ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ expr. ΠΡΠΈΠΌΠ΅ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π²:
1. ΠΡΠΈΠΌΠ΅Ρ 12-6
2. ΠΡΠΈΠΌΠ΅Ρ 9-15
3. ΠΡΠΈΠΌΠ΅Ρ 9-16
4. ΠΡΠΈΠΌΠ΅Ρ 9-17
5. ΠΡΠΈΠΌΠ΅Ρ 9-19
9.3. ΠΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
Π Π°Π±ΠΎΡΠ° Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ