12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #!/usr/bin/awk -f
- function pr(str) {
- if(lastc !~ "[{(]")
- gsub(/'/, "''", str)
- printf "%s", str
- }
- function trans(c) {
- printf "%s", end
- lastc = c
- end = "\n"
- if(c == "%")
- end = ""
- else if(c == "(")
- printf "echo -n "
- else if(c ~ "[})]") {
- end = "'\n"
- printf "echo -n '"
- }
- }
- BEGIN {
- lastc = "{"
- trans("}")
- }
- END {
- print end
- }
- /^%/ && $0 !~ /^%[{()}%]/ && lastc !~ /[({]/ {
- trans("%")
- print substr($0, 2)
- next
- }
- {
- if(lastc == "%")
- trans("}")
- n = split($0, a, "%")
- pr(a[1])
- for(i=2; i<=n; i++) {
- c = substr(a[i], 1, 1)
- rest = substr(a[i], 2)
- if((lastc !~ "[({]" && c ~ "[({]") ||
- (lastc == "{" && c == "}") ||
- (lastc == "(" && c == ")"))
- trans(c)
- else if(c == "%")
- pr("%")
- else
- pr("%" c)
- pr(rest)
- }
- pr("\n")
- }
|