gpt4 book ai didi

regex - sed ubuntu vs mac 正则表达式

转载 作者:行者123 更新时间:2023-12-04 18:36:43 25 4
gpt4 key购买 nike

我在带有 sed '1p;/^\s/!d;/^\s*id/d' 的 ubuntu 上使用的这个正则表达式.它保持第一行不变,删除空行和所有不以“{space}”开头或以“{blank}id”开头的行。在 mac 上,它只留下第一行。 regexp 在 mac 上的外观应该如何?
示例 test.csv

   id  | code | color_code | 
-------+------+------------+
11A00B| 15 | 9129102 |
11A00C| 16 | 9129103 |
(2 rows)

id | code | color_code |
-------+------+------------+
11B00B| 25 | 9129152 |
11B00C| 36 | 9129162 |
(2 rows)

id | code | color_code |
-------+------+------------+
11C00B| 22 | 9129107 |
11C00C| 9 | 9129108 |
(2 rows)

在我调用 sed -i '1p;/^\s/!d;/^\s*id/d' test.csv 之后
在 ubuntu 上
   id  | code | color_code | 
11A00B| 15 | 9129102 |
11A00C| 16 | 9129103 |
11B00B| 25 | 9129152 |
11B00C| 36 | 9129162 |
11C00B| 22 | 9129107 |
11C00C| 9 | 9129108 |

在 Mac 上
   id  | code | color_code | 

最佳答案

Ubuntu 使用 GNU sed , 而 OS X 使用 BSD sed .快速回答是 \s是识别空白的 GNU 扩展;使用标准 [[:space:]]取而代之,您的命令将对两者都起作用。

sed -i "bak" '1p;/^[[:space:]]/!d;/^[[:space:]]*id/d' test.csv

(另一个区别是 BSD sed 需要带有 -i 选项的后缀,而 GNU 是可选的。)

关于regex - sed ubuntu vs mac 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40160302/

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