我使用sed '1p;/^\s/!d;/^\s*id/d'
在ubuntu上使用此正则表达式。它使第一行不受影响,删除空行以及所有不以“空间”开头的行。或以' {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 |
答案 0 :(得分:4)
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则是可选的。)