強調文本我有一個像如何將符號[和]用作gawk的字段分隔符?
CreateMainPageLink("410",$objUserData,$mnt[139]);
從中我想要的
mnt
與
gawk
發生後提取數
139
一些文字。我嘗試以下表達式
gawk '{FS="[\[\]]";print NF}'
打印字段的數目(一個pipe
表達內要在grep
的結果使用)。如果我的字段分隔符是[
和]
,我希望看到打印出的數字爲3
(三個字段;一個在打開的矩形括號之前,一個在後,以及我想要提取的實際數字)。我得到的卻是一個場,對應於全系列,和兩個警告:
gawk: warning: escape sequence `\[' treated as plain `['
gawk: warning: escape sequence `\]' treated as plain `]'
我下面給here的例子,但顯然有一個與我的表情有些問題/錯誤。
使用以下兩種表達式也不起作用:
gawk '{FS="[]"}{print NF;}'
gawk: (FILENAME=- FNR=1) fatal: Unmatched [ or [^: /[]/
和
gawk '{FS="\[\]"}{print NF;}'
gawk: warning: escape sequence `\[' treated as plain `['
gawk: warning: escape sequence `\]' treated as plain `]'
gawk: (FILENAME=- FNR=1) fatal: Unmatched [ or [^: /[]/
感謝您的解決方案,這似乎工作。但是,你是否也有解釋爲什麼你的解決方案有效,我的錯在哪裏? – Alex
在你描述的手冊頁鏈接中說,要在括號表達式中包含單個']',必須將其轉義。但是,正如我們在這個問題上看到的那樣,一次轉義是錯誤的。你要麼不逃避,要麼逃脫兩次。兩者都與手冊頁相矛盾。我錯過了什麼? – Alex
@Alex通過posix:你不逃避它,並使其成爲第一個字符。通過對posix的awk擴展:如果在引用的字符串內部,或者如果在引用的字符串外部,則只會執行一次兩次轉義。 – fjardon