awk使用逗号(可选)后跟多个空格作为FS
我需要做的是解析以下形式的字符串 -option option Argument,--可选符号一些文本,不感兴趣 我将FS设置为awk使用逗号(可选)后跟多个空格作为FS,awk,nawk,Awk,Nawk,我需要做的是解析以下形式的字符串 -option option Argument,--可选符号一些文本,不感兴趣 我将FS设置为 BEGIN { FS = ",?\ +" } 但它不起作用。。。它应该在每个随机数的空格(至少一个)上断开,前面加逗号(可选)。有什么想法吗 Thx提前 奥利弗 这使得逗号是可选的,而不是空格。这将在每个选项和optionArg中创建一个单独的字段,我相信这是您想要的 awk 'BEGIN {FS = "[,]*[ ]+";} { print $1; pr
BEGIN {
FS = ",?\ +"
}
但它不起作用。。。它应该在每个随机数的空格(至少一个)上断开,前面加逗号(可选)。有什么想法吗
Thx提前
奥利弗
这使得逗号是可选的,而不是空格。这将在每个选项和optionArg中创建一个单独的字段,我相信这是您想要的
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
awk'BEGIN{FS=“[,]*[]+”;}{print$1;print$2;print$3;print$4;print$5;}'-option1 hello,--option2 world,-option3
>EOF
-选择1
你好
--选择2
世界
-选择3
您的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
}
}
'
此外,实际上不需要检查多个空格。只需使用逗号作为分隔符,然后修剪剩余的空格
echo "-option1 hello, --option2 world, -option3" | awk 'BEGIN{FS=","}
{
for(i=1;i<=NF;i++){
gsub(/^ +| +$/,"",$i)
print $i
}
}
'
你说的“没用”是什么意思?你们得到了什么样的结果,和你们期望的有什么不同?“随机”并不意味着“任意”不正确。不管有没有字符类,特罗尔霍恩的模式在语义上是等价的。
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