【发布时间】:2010-01-10 13:14:45
【问题描述】:
我想在 shell 脚本中嵌入一个 awk 脚本,但这样做有困难,因为我不知道用 ; 结束语句的位置哪里没有。
这是我的脚本
#!/bin/sh
awk='
BEGIN {FS = ",?+" }
# removes all backspaces preceded by any char except _
function format() {
gsub("[^_]\b", "")
}
function getOptions() {
getline
format()
print
}
{
format()
if ($0 ~ /^SYNOPSIS$/ {
getOptions()
next
}
if ($0 /^[ \t]+--?[A-Za-z0-9]+/) {
print $0
}
}
END { print "\n" }'
path='/usr/share/man/man1'
list=$(ls $path)
for item in $list
do
echo "Command: $item"
zcat $path$item | nroff -man | awk "$awk"
done > opts
顺便说一句,我正在使用 nawk。
提前致谢
【问题讨论】:
-
抱歉在这里造成了很多混乱^^...首先,我发布了错误的脚本版本,现在已更正...其次,脚本现在可以工作了:- )...原因是我忘记将 $awk 放在双引号中,这总是在脚本的第一行给我一个语法错误...
-
谢谢大家的回答,他们提供了很好的见解^^