簡體   English   中英

了解sed命令中的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM