Text-Processing
正則表達式後視忽略引號
我的文件中有以下字元串,我想在之後提取單詞
-s
,即yesterday
不帶引號:-t -w -g london -s 'yesterday' -e 'yesterday' -f 100000"
所需輸出
yesterday
我試過的
- 第一次嘗試:
grep -oP '(?<=\-s )\w*.*'
這導致
'yesterday' -e 'yesterday' -f 100000
但有時我也可能得到如下內容,即沒有任何引號或雙引號
-t -w -g london -s "yesterday" -e 'yesterday' -f 100000" -t -w -g london -s yesterday -e yesterday -f 100000"
- 第二次嘗試:
grep -oP '(?<=\-s )\w*'
在這裡,我在輸出中只有單引號。
不確定如何處理上述情況。
一種相對簡單的方法是通過後向正則表達式提取帶有引號(單引號或雙引號)的字元串並稍後將其修剪掉(GNU grep)
grep -oP -- '-s\s*\K([^ ]+)' file | tr -d \'\"
給定範例輸入的替代 (GNU)
grep
:-t -w -g london -s 'yesterday' -e 'yesterday' -f 100000" -t -w -g london -s "yesterday" -e 'yesterday' -f 100000" -t -w -g london -s yesterday -e yesterday -f 100000"
$ grep -oP "(?<=-s \"|-s '|-s )[^'\" ]*" file yesterday yesterday yesterday