regex - SH CLI sed 从列表中删除除路径之外的所有字符
问题描述
有一个rsync
文件列出了文件的结果:
drwxrwxrwx 4,096 2018/12/10 15:27:39 test/dir/one
drwxrwxrwx 4,096 2018/12/10 15:27:39 best/folder/two
如何使用sed
摆脱路径以外的一切?
想要的结果:
test/dir/one
best/folder/two
我尝试了这个正则表达式:它应该可以找到路径的前面作为基础,sed
但它在使用时没有任何效果:
cat listing.txt | sed 's/.*[0-9]+:[0-9]+:[0-9]+ //' | less
我错过了什么?
解决方案
您sed
可能不支持+
这种形式的重复运算符。尝试
sed 's/.*[0-9]\+:[0-9]\+:[0-9]\+ //' listing.txt
(这也消除了讨厌的无用cat
)。
回想一下,这sed
早于现代正则表达式的许多装饰。您sed
可能支持-r
or-E
标志以启用扩展的正则表达式支持(与许多新手最熟悉的现代正则表达式方言仍然相去甚远),但这不是可移植的。
当然,如果列表使用固定的字段宽度,也许只需尝试
cut -c47- listing.txt
(不在我可以验证精确数字的地方 - 使用不同的值。)
推荐阅读
- cors - Cloud Run 是否会从我的后端移除 CORS 标头?
- javascript - 当我单击该弹出窗口内的编辑按钮时,我想使用输入字段调用相同的弹出窗口,我该怎么做(如果可能)?
- r - 在 rhandsontable Shiny 环境中使用 dplyr mutate
- javascript - Discord.JS 附件 URL / 图片问题
- python - Python Selenium 写入 excel
- c - C - 带有 pow 功能问题的 printf
- bluetooth - 当您信任蓝牙设备时,存储信任的配置文件在哪里?
- statistics - stata 从 T 分布计算概率
- javafx - 使用 fxml 将模型绑定到自定义控件
- asp.net - 如何正确设置 ASP.NET web.config 以在边缘情况下显示特定于应用程序、安全且用户友好的 asp.net 错误消息