αααααΆαααα½ααααΌαα»αα’αααααααα 20 ααΆααΈαα»α α αΆααααΈααΌα ααΆααΈαα·αααααααΆααααΉαααα’ααααΎααΆ ααΆααααααα»αααααααααααΆαααααααΆααααα α αΎααααΉααααΆααααΊααααΆαα - "αααΆ αααα»ααα·αααΆαααα»ααααα αΎα"α
ααΆαααα·ααΆαααΆ "ααΎααα ααΈααα" αααα ααα’α»ααα αα·αα·ααααααααΆαα½ααα ααΎα’αααααα "αααα»αααααΆαααα½ααααα ααααααααα»αααΆααααα·αααΎααΎααααααααα ααΈαααααΌαα’αααΈααααααα»αααΎαααααααΎα±ααα’ααα" αααα ααα’α»ααα αααααααααααααααααΌα ααα α»αααΉααααααΆααααα αΎαα ααΉαααααΌαααΆααααα αΆαα"
ααΆαααΆαααΏαααααα αα·αα’αααααααΆααααααα·α
αααα»ααααααααααααα sed αααααΎααααα»αααααΎααΆααα½αααα αααααΆαα»αα―αααΆα α αΎαααααΎαααΆα systemctl varnish reload. ααΆαααα α»αααΆαααΆαα...
αα·ααααα½αααΆαααΆααααααααα»αααΆααααααααααΆ "α’ααΈαααααααααα»αααΆαααααΆααααααΌαααΆαα½αααααααα" αα·ααααα½αααΆαααΆααααααααα»αααΆααααα αα ααααααααααΆααααΉαααααααΆααααααΆαααΆααααΆααααΉαααααΈαααΆα "ααααΆαααααααΆααΆαααααΊααααΎαααα»αααΆ ααααα·αααΆαααα αΆααΌα ααααΆ!"
αααααααααΆααΆααα’ααααΆαα αΆααααααΎα
α’ααααααααααααΆααΆααααααΉαα’αααΈααααααα bash, awk, sed αα·αααααααααααααΎαααΆαα α
ααααααΉαα’αααΈαααΆαααΈαααααΌαααΆααααααα
α·ααα ααα»αααααα·αα
αΆαααΆα
αααα
ααααΆαααααααΆαα
αααα»αα’αααααααααΈαααααΌαααΆαααααΆααααααΌαα
αααααααΆαα½α .
α’ααααααααααΊααΆααΆαααααααααΎααααααΆαααααα»αααααΆααΆααΆα’αααααααααΆαααΈααΈααααααΆα ααα»α; ααΆααααααα .
ααααα’αΆαα·αααααααΆααααα’α½α ααα Panoramic αα ααααΉααααΌαααααΉαααΎαααα»αααααααααα αα½ααααααααα ααααααααααααΌαααΆαα·ααΆα αααα’ααΈαααααααα αααααΈα αααααΆαα ααααΈααααΆαα α»α ααα‘ααα ααααααααα’αααα αΌαα α·ααααααααΊα‘αΎααα αααα»αααΆαααααα’ααα ααααΎα²αααα·α αααααααααΆαα α»α ααααΆαα·α αα·αααΆαα»ααΈαα½α αα αααα»ααααααΈαααα»ααααααααααααα·ααα ααΎααααΆααααααΆααααα αααααααΊαααΆααααααΆαααΈαααΆαααΆαα½αααΉαα αααααΎααααααΆαααΆ "αααΎαα’ααααα varnishreload" sh: ααααα: ααα α»α I/O αα αααα»αααααΆααααΆα" (αααΎαα’ααααα "varnishreload sh: echo: I/O error" αα αααα»αααααΆααααΆα) α αα ααααααααΆααααα αααΆαααΈα ααΆααΆα αα·ααα·αα’αΆα ααΆααααααααααααΆααααα α»αααΆαα½αα‘αΎα αααααΈααΆααΆαα·ααααααΆαα±ααααΆααααα αΆα’αααΈααΌα ααααΈααααααααα
αααααΆααα’αααααααα·αααΌαααααΆαα αααβααΆβααααααΈαβαααβααΆααααβαααβααααΎβααΎααααΈβαααα»αβααΆαβαααααβαα ααΆααααααααβα‘αΎαβαα·αα - α α αααααααΆ VCL α
ααΌα αααα αααααΎααααααα»αααααΆααααα αΆα ααα α»αααΆαααΎαα‘αΎααα ααΎαααΆαααΈααααα½ααα ααΎααΆα α αΎααααααΆααααα»αααααΆααααΆ ααΆαααΆαααααΆααΈααα ααΎααΆαααααΎαααΆαααΆαααααΉαααααΌα αααα»αααΆαααααααααΆαααααΆααα α»αααΌα ααΆα α ααΌα αααα ααααΆααααααΆααΆααααααΆααααα αααα αααα»αααααααΈααα·ααααααααααΆααα·ααα½α α αΎαα αααα»ααααααα»ααααααααΆαααααα½ααααα»α αααααΆααααα»αα α·αααααααααααΆ αααα»αααΉααααααΆααααΆαα½α ααΆαααααα»ααααααααα·α ααΆα 30 ααΆααΈ α αΎαααααααααααααα½ααααα»ααα ααΎααααααΎααααΈαααα’αΆαααααΆααααααααααΆααααααααα α αΎααααααααα αααα αΆααααΆααααΆααααα
αα»ααααααΆαααααα»αααααΏα α’α α ααΈα‘αΌαααααααααα»ααα½ααααα
ααΆαααΎαα―αααΆα varnishreloadαα
ααΎαααΆαααΈααααα½ααααα»αα
αααααααΆαααΈαααααααααα·ααα
αααααααΆαααααααααα Debian ααΆααααααΆα αααα»αααΆαααΎαααααααΈαααααααααΆααααααααα·α
ααΆα 200 αααααΆααα
αααααΆαααααααΆααααααααΈα αααα»ααα·αααΆαααααααααΆααα’αααΈαααα’αΆα αααααααα αΆαα ααααα·αααΎαααα»αααααΎαααΆαααΆα αααΎααααααααααΆααααΈααααΆααΈαα
αααΆαααΆαα·α αααααΆααααΆααααΆααα½α αααααΈαααααααααΆαα’αααααΆαα’ααΌαααΆααααβ¦ αα·αα αααΎααααααα αααα»αααααΎαααΆαααααααΈα α αΎαααΎαα’αααΈαααααΉαααααΌαααΆαααααααα ααααΆααΈα ααα»ααααααα α»ααα·αα’αΆα ααΎαααΎααααααα
ααααΎαααΆαααΈαααΈααα ααΎααααΈααααΆααααΆαααα»ααα·αα’αΆα αααααΎαααα α»αα‘αΎααα·αααΆααα ααΎααααΆαααΆαααααΉαααααααααααααα α αΎααααα»ααααα»αα αΆααααααΎααααα·ααΈααααΆααααααΌαααααααΈαααα α αΎαααααΎα±ααααΆαα ααααΆαααα α»αααααα
ααΎααααααΈαα’αΆα
ααα·ααα STDOUT (αααααααΎ > &-)? α¬ STDERR? ααΆααααΈαααααα·αααααΎαααΆααα
ααΈαααα
ααααα
ααΆαααΎααα
ααααααααααΆαααααααααα·ααΆααΆαα
αΆααααααΎα ααα»αααααααα αα·αα ααα»α’αααΈ?
αααα»αααΎα vim α αΎαααααααα½α varnishreload, αααααα set -x αα
ααααα shebang ααααααααΉαααΆααααααααααΆααααα α»αααααααααΈαααΉααααα
αααααααΊααααα
α―αααΆαααααΌαααΆαααααααΌα ααΌα
αααααααα»ααααα»ααααΆαααΈαα‘αΎααα·α α αΎαααΎαααΆααΆαααααΆααααααΌαααΆαααΌα
ααΆαααααα»α... ααΆαα ααααΏαααΊααααααααααΆαααααα»α ααααααα»ααααααΆααααααΌα C-like ααΆαααα·αα ααΌααααΈααααΆααααΌααα
αααα»αααααΆααΈααααα·ααααααααααΆααααΎααααΈααααααααααααααααααΆα
αΆααααααΎααααα αααα»αα
ααα‘αααΆαααααα»αα ααααααααΆααααα α»αα’αΆα
αααααΆαααααααααα·ααααα·ααΆααααααααα·ααΈαααααΆαααΎααα
αααα»αααααααΈα? αα ααΆαα·αααα ααα»ααααααα ααα α»ααα
αααα»αααα? ααααΆααΈαααΌαααα’αΆα
ααΎαααΆαααΆα
αααΎααααα»ααααααΆααααααΆααααααααα»αααΌα
ααΆαααααααααΆααααα»ααα·ααα
ααααααααααΆα αααααααααααααααααΆαααΆαα·ααΆα αααα’ααΈαααααΌαααΆααααααααΆαα ααΆαααααΎααααΎααα αααα
ααΆααααααααΆαααΎααααΈααααααααα»α α αΎα... ααΎααα
α αααα»αβααΎαβααααααΈαβα αΎαβααΎαβα²ααβαα·αβαααβαα
βααΎ shebangα #!/bin/sh.
/bin/sh β ααΆααααΆααααααΆ bash symlink ααα»ααααα ααΌα
ααααααααααΈαααααΌαααΆαααααααΆααααα»ααααααααααααααΆααΆαα½α POSIX ααααα? ααααΆαααααΌααα! αααααααΆαααΎααα
αααα»α Debian - ααΆααΆαααααΆααααΈα α αΎααααααΆα’αααΈαααααΆαααααΆαα /bin/sh.
# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jan 24 2017 /bin/sh -> dashααΆβααΆαβααααΎβααβαααβαα½α αααα»αβααΆαβααααΆααβααααΌβα shebang αα
#!/bin/bash, ααΆααα»α set -x α αΎαααααΆααΆααααααααα ααΈαααα»α αα
αααα
αΆααααααΎαα‘αΎααα·ααααααΆααΈαααΆαααααααααΆαα ααα α»ααααα’αΆα
α’ααα±αααΆαααΆαααα
α‘αΎααα
αααα»αααααααα
Jan 01 12:00:00 hostname varnishreload[32604]: /usr/sbin/varnishreload: line 124: echo: write error: Broken pipe
Jan 01 12:00:00 hostname varnishreload[32604]: VCL 'reload_20190101_120000_32604' compiledαααα 124 α αααΉαα αΎα!
114 find_vcl_file() {
115 VCL_SHOW=$(varnishadm vcl.show -v "$VCL_NAME" 2>&1) || :
116 VCL_FILE=$(
117 echo "$VCL_SHOW" |
118 awk '$1 == "//" && $2 == "VCL.SHOW" {print; exit}' | {
119 # all this ceremony to handle blanks in FILE
120 read -r DELIM VCL_SHOW INDEX SIZE FILE
121 echo "$FILE"
122 }
123 ) || :
124
125 if [ -z "$VCL_FILE" ]
126 then
127 echo "$VCL_SHOW" >&2
128 fail "failed to get the VCL file name"
129 fi
130
131 echo "$VCL_FILE"
132 }ααα»ααααααΌα
αααααΆααααα
αα αααααΆαα 124 ααΊαααααα’αΆα αα·αααααΆαααΆαα
αΆααα’αΆααααααα αααα»αααααΆααααα’αΆα
ααααααααΆααα α»αααΆαααΎαα‘αΎαααΆααααααααααααα α»αα½ααααα
αΆααααααΎααα
ααΎαααααΆαα 116α
ααΎα’αααΈααααΌαααΆαααααααα
ααΈαααα»ααα
α’ααα? VCL_FILE ααΆααααααααααΆαααααα·ααααα· sub-shell ααΆαααΎ?
αα
ααΎαααααΌαααΆαααααΌαααΆαα·ααΆααα’ααα VLC_SHOWαααααΎααα
ααΎαααααΆαα 115 ααΆαααΆααααααααΆααΆαααααααααα α αΎααααααΆααααααΆαα’αααΈααΎαα‘αΎααα
ααΈααα?
ααΈαα½αααΆααααΌαααΆαααααααΎαα
ααΈααα varnishadmαααααΆααααααα½ααααααα
ααααα‘αΎααααΆαααΈα αααααΆααααΆαααα‘αΎααααΆαααΈαααααα·αα
αΆααααααΎαα‘αΎααα·αα
αααα»ααα vcl.show -v ααααΎααΎααααΈαααα
ααααΆαααααααα
ααΆαααααααα VCL ααΆααααΌααααααΆααααααΆαααα
αααα»α ${VCL_NAME}αα
STDOUT α
ααΎααααΈαααα αΆαααΆαααααααα
ααΆαααααααα VCL ααααααα
αα
α»αααααα ααααΌα
ααΆαααααα»ααααΆα
αααΎαααααΆαααααααα
ααΆααααααααααααΌααααΆαααΈαααααα
ααααΆααα
αααα»αααα· α’αααα’αΆα
ααααΎααΆααααααααΆ varnishadm vcl.listααααααβαααβααΉαβααααααβααααΆβααΉαβααααααβααΆααααααα
discarded cold/busy 1 reload_20190101_120000_11903
discarded cold/busy 2 reload_20190101_120000_12068
discarded cold/busy 16 reload_20190101_120000_12259
discarded cold/busy 16 reload_20190101_120000_12299
discarded cold/busy 28 reload_20190101_120000_12357
active auto/warm 32 reload_20190101_120000_12397
available auto/warm 0 reload_20190101_120000_12587αααααα’ααα ${VCL_NAME} ααααΌαααΆαααα‘αΎααα
αααα»ααααααααααααααααααααααΈα varnishreload αα
ααααααααα VCL αααααααααα
αα
α»αααααα ααααα·αααΎααΆααα½αα αααα»αααααΈαααααΆααΉαααΆ "reload_20190101_120000_12397"α
α’ααα
αΆααα, αααααααα½α ${VCL_SHOW} ααΆαααΆαααααααα
ααΆαααααααααααααααααααΆαααααΆαααΈα α
αααΆαααααααΆαααααααα α₯α‘αΌαβαααβαααα»αβαααβααΆβα ααα»βα’αααΈβααΆαβααΆβααααααβαααααΆβααΆα
α set -x αααααα
ααΆααΌα
ααααΆααααΆαα - ααΆαα½ααααα
αΌαααΆαα·ααΆααααΆαααααααα
ααΆααααααααααααααα
ααΆααΆααΆαααααΆααααΆαααααααααΌααααααΆααΆαααααααα
ααΆαααααααα VCL αααααα ααΆααΏααα’αΆα
ααααΌαααΆαααααααΆαα½αααααΆααΈα―αααΆαααΆα
αααΎαα ααα·ααααααα
ααΆααααα C ααααΌαααΆαααααΎααΎααααΈααααααααααααααα―αααΆαααααααα
ααΆααααααααααΆααααΆααααααΌαααΆααα½ααααα
αΌααα
αααα»αα―αααΆααααααααα α αΎααααααΆα’αααΈααααααααααααΆααααααΌαααΆααααααααΊαα·ααΆαα’αααΈα
ααΆαααααααααααβαααααΆααβααα·βαααβαα·αααααΆβα’αααΈβα―αααΆαβαααβααΆαβαα½αβαααα
αΌαβααΊβααΆαβααααααβααΌα
βααΆαβαααααα
// VCL.SHOW <NUM> <NUM> <FILENAME>ααααα·αααααΆαααααα»αααα·ααααααα ααΎαα αΆααα’αΆααααααααΎαααααα―αααΆαα
ααΎααΆαα’αααΈααΎαα‘αΎααα
ααΈαααα»ααα
αααα»αααΆααααααααΆααααααααΆαααα
αΆααααααΎααα
ααΎαααααΆαα 116?
α
αΌαααΎααααααααΆαααΆα
αααα»ααααααΆααα½ααααααα
- ααΆαααα
echoαααααααα»ααααααααααα’ααα${VCL_SHOW}echo "$VCL_SHOW" awkαααααααααααααααΆαα (αααααααααΆ) αααααΆαααΈαα½ααααααΆααααΈαααααα’αααααααΊ "//" α αΎαααΈααΈαααΊ "VCL.SHOW" α
Awk ααΉααααααα ααααΌααααααΆααααΈαα½ααααααααΌαααααΆααΉαααααΆαααΆααααα α αΎααααααΆαααααααααααΎαααΆαααααΆαααawk '$1 == "//" && $2 == "VCL.SHOW" {print; exit}'- αααα»αβααβααΌαβαααβαααααΆαα»αβαααααβααΆαβααΆβα’αααβααααΆαβαααβαααααβαααβααααααΆα α’ααα FILE ααΈααααΆα ααα½αααΆααααααΆααααααα
αααα ααΆα
α»αααααα α’αααΌα
α»αααααααααααα
ααααΌαααααΉαααΆαααα’ααα
${FILE}.{ read -r DELIM VCL_SHOW INDEX SIZE FILE; echo "$FILE" } - α
αΆααααΆααααΈααα αΆαααΈ 1 αααααΈ 3 ααΆααα’ααααααΌαααΆααα»αααααααααα»α subshell αα½α ααααααα
ααααααα
$FILEααΉαααααΌαααΆαααααααα α’αααVCL_FILE.
ααΌα αααααΆαα’ααααΆαα·ααααΆααα ααΎαααααΆαα 119 ααΆααααα αΆα ααααααααΎααααααααααα½ααααααααΆααααααααΆαααααΈαααα’αΆα αα»αα α·αααααΆα ααα VCL ααΉααααα―αααΆααααααΆαα ααααααα αααα»αααααααααααα½αααα
αααα»αααΆαα’αα·ααααΆαααΈαααααα·ααααΆααααΎαααΆαααΎααααααΆαα ${VCL_FILE} α αΎαααααΆααΆαααααΆααααααΌαααααΆααααΆααααααααΆ ααα»ααααααΆαα·αααΆααα
ααα’αααΈαααααα α’αααΈαααααΎαααΆαααα’αααααΆαααααα»α ααα»αααααα
ααααααα»αα
αΆααααααΎαααααΆαααα ααΆααΆααααααααΌαααα α»αα
ααΆα αΆααααΈααΌα
ααΆααα α»ααα·αα’αΆα
αααααΎαα‘αΎααα·αααΆααααα
αααααααΎαααΆαααααααΈαααααα ααααααααα 30 ααΆααΈαααααΆαααααααααΆααα»ααααααα
ααα½α XNUMX ααα αΎαααΎαααΈααα αα·α
αα
ααΆαα’αΆαα·ααΆααααααααΆαααα
α‘αΎαααααα»ααααα αΆαααααααααα½αα‘ααα αα
ααααααααααΆα ααααααααΌαααΆαααααααααααΆααα»αααααΆααααΆααα·α
αα
α αΎαααααΌαααΆααααΊααααα·α
ααααααΆαααΆαααααααΈααΈ sed αα·ααααααααΆαααααΆαα½ααααααααα αααα αΆααΆαα½αααα α»ααα
αααα»α varnishreload ααααΌαβααΆαβααΆααβαααβαααβαα·αβα’αΆα
βααΆαβααβααΆαβαα
βαααα»αβααααΆα
αβααβαααβααααΆβα
ααααβα’αααβαααβααβα α βααΆ sed-fu... ααΊβαα·αβααΆ... ααααΆα
αα αααααΆα ααααααΆαααααα»αααΆαααααααααααα½α ααΌα αααααααα»ααααααα α α·ααααααααααΆααααα»αααααααααααααα αααα»ααααααΉαααΆαα αααα»ααα½αααααΆααααααααα»α ααααΎαααΆαααααααΆαααααααα½αα ααα½αααΆααααα»αααααααααααααααααΆαα αααααααα αΆααααααααααα α αΎαααΎαααααααα»αα αααΆααααΆαααα’αααΈα’αααΈααααααα»αααΎαα‘αΎαα
αααααΆαααΆαααααΆααααααΌααααααΌααα·αα’αΆα
αα½αααΆαααΆαααΈααΎααα»α αααα»αααΎααααααααα
α
α·ααααααααααΆα‘αΎααα·ααααα
αΆααααααΎαααΈαααααΆαα 116α αααα»αααααΈααΆααααααααααΌααααααΆαααααΆααααΊααααααααα α αΎααα·αααΆαα·αα
αΆαααΆα
αααααΎααΆααα read.
ααΎαααα α»ααααααααα
sh: echo: broken pipe - αααααααα
α‘αΎαααΆααΈααααααααα
αααα»αααΆααααααααΆααα ααα»αααααααα»αααααααααΆ ααΈαα½αααΊααΆαα·αα»ααααααααααααααΆα (α¬αααΆαα αα
ααΆααα’ααααααααα·α)α Awk αααα·αααααα»ααααα»αα
α·ααααααα α αΎααααα»αααααΈαααααΆαα·αααΆ awk | {read; echo} ααΆααα
ααΆααΆαα±ααααΆααααα αΆααΆααα’ααααα α ααα»α’αααΈαα·ααααα½αααΆ? ααΆααααααααΆαα½ααααααΆααααααα·αααααΎαααααααα·αααααΆααα’αααααα awk αα α αΎαααΌααααΈααααΆααααααααΆααααααααααααααα read ααΎαβααΈβαααβαααα
α
αΆααααΆααααΈαααααΆα ααα»α ααΆααααΆαααΆαααααααΈααΈ sedαααα»αα
ααααΆαααααααααΆααααααΎαααα½αααΆαααααΈαααααααα»α αα·αααααΎα±ααααΆααααα½α echo | awk | { read; echo} α
αΌααα
αααα»αααΆααααααΆααααα
αααΆαα echo | sed. αααααααααααααα·ααααααΆαα·ααΈααΆαααααααααα’αααα»ααααα»αααΆααααααα’ααααααααΆαααα α»α αααα»ααα·αααΆαααΆαα αα
ααΆαααααα»αααΉαααΆααααα sed-fu αααααααα»α α αΎααααα ααααΆαααα’αααΈααααΈα’αααΈαααα αΆα αα
ααΆαααααΌα αααα»αααΆααα»ααα·ααααα½αααΆαααΆααααααααα»α αααααΆα’ααααα·αααααα sed talk ααΎααααΈαα½ααααα»ααααααΎαα’αααα sed αααααΆαααααα·αααααΆαααΆααα»αα
αααα»αααΆααααααΆααααΆαα·ααΆ varnishadm vcl.show -v "$VCL_NAME" αα
ααΆααα―αααΆα ααΌα
αααααααα»αα’αΆα
αααααααΎααΆααααααααααααΈα sed ααααα·αααΆααααα αΆαααα»αααΆαα
αΆααααααΎαα‘αΎααα·αααΌαααααΆααααα
ααΆααα·αααααΆααααΈαα’αααΈαααααααααΆααααα
αΌαααααΎαααΆα sed α’αΆα
ααααΌαααΆαααααΎααα
αααα»α . αα
αααα»αααααα sed αα·αα·ααααααααΆ n αααααΆαααααΆαα
αααΆααααΆααΆαααααΆααααααααααΆααα
αα αααα»αααΆαααααααΆααααΆα αααΎα αα·αααΆαα½αααΉαα’αα»ααΆααααααααα αααα·ααααααααα»α ααΎαααΆααααααααααααΈα sed ααααααααααααααααΌα ααααΆααΉααααααΆααααΎαααΆααααΌα 116 α
ααΆαααααααααααΆα―αααΆαααααΌαααααΆααα·αααααααααα αΌαα
> cat vcl-example.vcl
Text
// VCL.SHOW 0 1578 file with 3 spaces.vcl
More text
// VCL.SHOW 0 1578 file.vcl
Even more text
// VCL.SHOW 0 1578 file with TWOspaces.vcl
Final textααααααα ααααΆαα·αα
αααΆααααΈααΆααα·αααααΆααΆαααΎαα ααα»ααααααΎαααααΆααααα
αΆααα’αΆααααααααΎααα·αααααααααΌαααα»αααααα // VCL.SHOWα αΎαααΆα’αΆα
ααΆααα½αααΆααΆα
αααΎααα
αααα»ααα·αααααααααα
αΌαα αααβααΆβααΌαβα ααα»βαααβααΆαβααααα½αβααΎαβαααα
ααβαααααΆααβααΈβααΆαβααααα½αβααααΌαα
# ΡΠ°Π³ ΠΏΠ΅ΡΠ²ΡΠΉ, Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ
# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ sed, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ '#' Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ '/', Π·Π° ΡΡΡΡ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ Π² ΠΈΡΠΊΠΎΠΌΠΎΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β// VCL.SHOWβ, Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΡΠΎΠΊ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ
# ΡΠ»Π°Π³ -n ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ sed Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΠΈΠ» Π²ΡΠ΅ Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (ΡΠΌ. ΡΡΡΠ»ΠΊΡ Π²ΡΡΠ΅)
# -E ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
> cat vcl-processor-1.sed
#// VCL.SHOW#p
> sed -En -f vcl-processor-1.sed vcl-example.vcl
// VCL.SHOW 0 1578 file with 3 spaces.vcl
// VCL.SHOW 0 1578 file.vcl
// VCL.SHOW 0 1578 file with TWOspaces.vcl
# ΡΠ°Π³ Π²ΡΠΎΡΠΎΠΉ, Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°
# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ βsubstituteβ, Ρ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ Π²Π½ΡΡΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½Π°Ρ Π³ΡΡΠΏΠΏa
# ΠΈ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ, ΡΠ°Π½Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°
> cat vcl-processor-2.sed
#// VCL.SHOW# {
s#.* [0-9]+ [0-9]+ (.*)$#1#
p
}
> sed -En -f vcl-processor-2.sed vcl-example.vcl
file with 3 spaces.vcl
file.vcl
file with TWOspaces.vcl
# ΡΠ°Π³ ΡΡΠ΅ΡΠΈΠΉ, ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²
# ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ awk, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ
> cat vcl-processor-3.sed
#// VCL.SHOW# {
s#.* [0-9]+ [0-9]+ (.*)$#1#
p
q
}
> sed -En -f vcl-processor-3.sed vcl-example.vcl
file with 3 spaces.vcl
# ΡΠ°Π³ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ, ΡΡ
Π»ΠΎΠΏΠ½ΡΡΡ Π²ΡΡ Π² ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΠΈΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄
> sed -En -e '#// VCL.SHOW#{s#.* [0-9]+ [0-9]+ (.*)$#1#p;q;}' vcl-example.vcl
file with 3 spaces.vclααΌα ααααααΆαα·ααΆααααααααΈα varnishreload ααΉαααΎααα ααΌα ααα:
VCL_FILE="$(echo "$VCL_SHOW" | sed -En '#// VCL.SHOW#{s#.*[0-9]+ [0-9]+ (.*)$#1#p;q;};')"αααααα·ααααΆααΆαααΎα’αΆα
αααα αΆααααΆαααααΈααΌα
ααΆααααααα
ααααα·αααΎααααα’ααααααααΌαααααΆααΉαααααααααααααΆα // VCL.SHOWαααααΆαααα αααααααααα’ααααααααααΆαααΆααααααα
αααα»ααααααΆααααα α αΎααααααΆαα»αα’αααΈααααααααΆαααααα
αααααααααααΆααααΈααααα·ααααα·ααΆααααα αααα
ααααααααααααΆααααααΆαα»α α αΎααααα
αααααααα·ααΈα
ααΆααααααΆααααααα?
ααΎααααααΆαα
α·αααααΆαα½αααΉαααααααΈα sed αα·αααΆααα·ααααααΆααΆααΆααααα½ααααααΌαααΎαααΆααα’ααα ααΆααααΆαααααΎααααααααααααα»αααΆαααααααααααααααα
ααααΆα ααΌα
αααααααα»αααΆαααααΌα "varnishreload" αα
ααΎαααΆαααΈααα α αΎαααααΎαααΆαααΆααααααα systemctl reload varnish. ααα α»ααα·αααα’ echo: write error: Broken pipe ααΎα
αα
αα»αααΎααααααααα ααααααααααα·α
βαααβαααα»αβααβαααβα
αΆαβααΆαααβαααααΆβααααΈβααααΌαβααΆαβαααα
αΌαβαααα»αβααΆαβαααΉαβααβααααΆααΈα...
ααααα: www.habr.com
