AWK使用逗号(可选),我需要做的是解析以下形式的字符串其次是多个空格作为FS
-option optionArgument,--alternativeNotation一些文字,没什么兴趣......
我设置了FS到
BEGIN {
FS = ",?\ +"
}
,但它没有工作...它应该在空白的每一个随机数(至少一个),用逗号(可选)preceeded打破。有任何想法吗?
Thx提前,
奥利弗
AWK使用逗号(可选),我需要做的是解析以下形式的字符串其次是多个空格作为FS
-option optionArgument,--alternativeNotation一些文字,没什么兴趣......
我设置了FS到
BEGIN {
FS = ",?\ +"
}
,但它没有工作...它应该在空白的每一个随机数(至少一个),用逗号(可选)preceeded打破。有任何想法吗?
Thx提前,
奥利弗
FS = “[,] * [] +”
这使得逗号可选的,但不占空间。这会在每个选项和选项Arg之外创建一个独立的字段,这是我相信你想要的。
awk 'BEGIN {FS = "[,]*[ ]+";} { print $1; print $2; print $3; print $4; print $5;}' << EOF
> -option1 hello, --option2 world, -option3
> EOF
-option1
hello
--option2
world
-option3
不正确。无论有没有字符类,Trollhorn的模式在语义上都是相同的。 – 2010-01-04 22:02:12
好点。我永远不会使用角色类。 – 2010-01-04 22:08:01
你FS
做什么,你在你的问题描述,但空格前的反斜杠可能因shell引用是多余的:
$ echo '-option optionArgument, --alternativeNotation Some text, nothing of interest...' | \
nawk 'BEGIN {
FS=",? +";
OFS="][";
}
{
print "["$1,$2,$3,$4"]";
print "["$5,$6,$7,$8"]";
}'
[-option][optionArgument][--alternativeNotation][Some]
[text][nothing][of][interest...]
你要什么领域是?
@OP,下次尝试描述你的最终输出是什么。
echo "-option1 hello, --option2 world, -option3" | awk 'BEGIN{FS=",[ ]+"}
{
for(i=1;i<=NF;i++){
print $i
}
}
'
输出
$ ./shell.sh
-option1 hello
--option2 world
-option3
而且,实际上是没有必要检查多个空白。只需使用逗号作为分隔符并稍后修剪剩余的空格。
echo "-option1 hello, --option2 world, -option3" | awk 'BEGIN{FS=","}
{
for(i=1;i<=NF;i++){
gsub(/^ +| +$/,"",$i)
print $i
}
}
'
输出
$ ./shell.sh
-option1 hello
--option2 world
-option3
你说的 “它不工作” 是什么意思?你得到了什么结果,这与你的预期有什么不同? – 2010-01-04 21:49:29
“随机”并不意味着“任意” – 2010-01-04 23:46:25