以下命令根据标准提取文件 temp_practice.txt 并将其分为几个文件 temp_output_1.txt,temp_output_2.txt等... > $ 5〜“?”
awk -v n = 1'{print>“ temp_output_” n“ .txt”} $ 5〜“?” {n ++}'temp_practice.txt
在Ubuntu上,它运行非常顺畅,我得到的正是我想要的。但是,当我尝试在Mac上运行相同的命令时,出现以下语法错误:
awk: syntax error at source line 1
context is
{print > "temp_output_" >>> n <<< ".txt"} $5~"?" {n++}
awk: illegal statement at source line 1
使用n变量生成文件名似乎存在语法错误。我知道Linux和Mac上的awk之间存在差异,但是我找不到有关该特定问题的任何信息。我需要使用其他命令还是只需要在现有行中添加一些内容?
答案 0 :(得分:0)
I told you about this exact issue previously。您的下一个问题与您的问题无关。 ?
是一个正则表达式元字符,意为zero-or-one repetitions of the preceding expression
,但请查看您的正则表达式/?/
-您没有前面的表达式。因此,某些awks可能会将?
当作文字,而另一些可能会产生语法错误。要匹配文字?
(我假设这是您要尝试执行的操作),请根据具体情况匹配$5~/\?/
或$5~/[?]/
或index($5,"?")
甚至$5=="?"
您的输入和要求。