gpt4 book ai didi

regex - 理解 sed 命令中的正则表达式

转载 作者:太空狗 更新时间:2023-10-29 12:32:03 26 4
gpt4 key购买 nike

我正在学习 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_56 文件中存储来自 56...区的人的台词,对于 dpt_89 中的 89 区也是如此。

我不明白的是“|”的目的或作用和正则表达式中的“^”字符 => ^[^|]*|[^|]*|56 是什么意思?我所看到的只是“选择不以零或多次“|”开头的每一行,或者没有多次“|”的每一行......但我感到困惑。

最佳答案

表达式 [^|]*| 表示“| 后跟 | 的任意数量的字符”。< br/>使用 [^|] 而不是 . 的原因是为了确保 . 通配符不会贪婪地吃掉太多输入。

看起来 sed 命令本身正在检查竖线分隔输入的第三个字段。如果值以 56 开头,则将其写入 dpt_56,如果值以 89 开头,则将其写入 dpt_89

关于regex - 理解 sed 命令中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23937178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com