[英]understand Regular expression in a sed command
我正在學習Sed,並且已經花了一個小時的時間來理解這個命令,這是我書中的示例:
$ sed -n -e '/^[^|]*|[^|]*|56/w dpt_56' -e '/^[^|]*|[^|]*|89/w dpt_89' tel2.txt
$ cat dpt_56
Karama Josette|256 rue de la tempete|56100|Lorient|85.26.45.58
Zanouri Joel|45/48 boulevard du Gard|56100|Lorient|85/56/45/58
$ cat dpt_89
Joyeux Giselle|12. rue de la Source|89290|Vaux|45.26.28.47
我所理解的是她的意思:-此命令的目的是將dpt_89區域中89區的人的行存儲在dpt_56文件中。
我不了解“ |”的目的或作用 和正則表達式中的“ ^”字符=> ^[^|]*|[^|]*|56
是什么意思? 我所看到的是“選擇不以零或多次“ |”開頭的行,或者不以“ |”開頭的行……但我感到困惑。
表達式[^|]*|
意味着“任何數量的未人物|
后跟一個|
”。
使用[^|]
代替的原因.
是確保.
通配符不會貪婪地吃太多輸入。
看起來sed命令本身正在檢查管道定界輸入的第3個字段。 如果值以56
開頭,則將其寫入dpt_56
;如果值以89
開頭,則將其寫入dpt_89
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.