我有一个具有以下结构的 ASCII 文件:
file1.png otherfile1.png
file2.png otherfile2.png
file3.png otherfile3.png
...
我想替换.png
为.mat
,但仅用于第二列。结果应该是这样的:
file1.png otherfile1.mat
file2.png otherfile2.mat
file3.png otherfile3.mat
...
我如何在 Bash 中做到这一点?
我有一个具有以下结构的 ASCII 文件:
file1.png otherfile1.png
file2.png otherfile2.png
file3.png otherfile3.png
...
我想替换.png
为.mat
,但仅用于第二列。结果应该是这样的:
file1.png otherfile1.mat
file2.png otherfile2.mat
file3.png otherfile3.mat
...
我如何在 Bash 中做到这一点?
好吧,如果它是行的结尾......
s/old/new/
搜索和替换\.
文字点(没有转义,它匹配任何字符)$
行结束或者要明确指定第二列,您可以使用一种
awk
方式...gsub(old, new, where)
搜索和替换$2
第二栏您可以像这样直接在行尾替换所有
.png
字符串:INPUTFILE
上面的命令不会修改
INPUTFILE
,只会将更改后的版本打印到终端。要直接编辑文件,请将
-i
标志添加到sed
(或-i.bak
存储原始文件的备份):