我正在尝试使用正则表达式编辑一些文件。
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"
答案 0 :(得分:1)
如果您想删除一行,则无需进行替换。检查条件并显示线条:
[edit]看起来你想要的是你的初始模式所暗示的相反:
perl的:
perl -ne '/SourceFile|""/&&print' file
AWK:
awk '/SourceFile|""/' file
的grep:
grep 'SourceFile\|""' file
[旧答案]
perl -ne '!/SourceFile|""/&&print' file
使用awk缩短:
awk '!/SourceFile|""/' file
或grep:
grep -v 'SourceFile\|""' file