我有一个行显示如下的文件:
mv -v DF-02239.jpg DF-02239.jpg
mv -v DF-02240.jpg DF-02240.jpg
mv -v DF-02241.jpg DF-02241.jpg
mv -v DF-02242.jpg DF-02242.jpg
我试图用.JPG替换FIRST .jpg并使用以下sed:
sed 's/\(mv -v .*?\)\(\.jpg\)\(.*\)/\1.JPG \3/' finalDuplicates.txt > finalCaseDuplicates.txt
我已经验证了regexp的工作原理: http://regex101.com/r/cU9xV2/1
答案 0 :(得分:2)
您只需将jpg替换为JPG,sed
仅替换第一次出现
sed 's/jpg/JPG/' file_name
<强>输出强>
mv -v DF-02239.JPG DF-02239.jpg
mv -v DF-02240.JPG DF-02240.jpg
mv -v DF-02241.JPG DF-02241.jpg
mv -v DF-02242.JPG DF-02242.jpg
答案 1 :(得分:1)
稍微修改一下语法:
sed 's/\(mv -v .*\.\)jpg\(.*jpg\)/\1JPG\2/'
诀窍是让第二个jpg
字符串包含在等式中,这样贪婪的sed
就不会与整行相匹配。
答案 2 :(得分:1)