【发布时间】:2017-02-23 04:36:54
【问题描述】:
我正在尝试使用正则表达式编辑一些文件。
sed 似乎太有限,所以我改用 Perl。
我的语法可能有问题。
正则表达式模式适用于 TextMate。
当我使用 Perl 时没有任何反应。
我想删除所有不包含SourceFile 或"" 的行。
供您参考,用于清理来自exiftools 的输出数据。
$ perl -pe 's/^(?!.*(SourceFile|"").*).*$\n//g' out.csv
$ cat out.csv
SourceFile,GPSLatitude,GPSLongitude
1.jpg,,
2.jpg,,
3.jpg,"10 deg 20' 30.30"" N","40 deg 50' 60.60"" W"
4.jpg,"10 deg 20' 30.30"" N","40 deg 50' 60.60"" W"
清理应保留第一行和所有包含 GPS 数据的行。所以清理后应该是这样的:
SourceFile,GPSLatitude,GPSLongitude
3.jpg,"10 deg 20' 30.30"" N","40 deg 50' 60.60"" W"
4.jpg,"10 deg 20' 30.30"" N","40 deg 50' 60.60"" W"
【问题讨论】:
-
你想用这个正则表达式做什么?包括您的输入和输出样本。
-
如果您可以再次重新运行您的 exiftool 命令,一个选项是告诉 exiftool 仅处理包含 gps 坐标的文件,例如
exiftool -if '$GPSLatitude and $GPSLongitude' -GPSLatitude -GPSLongitude -csv >out.csv TargetDir -
感谢@StarGeek!最有用的帮助。
标签: regex bash macos perl exiftool