mcE*_*nge 5 command-line bash sed text-processing
我有一个具有以下结构的 ASCII 文件:
file1.png otherfile1.png
file2.png otherfile2.png
file3.png otherfile3.png
...
Run Code Online (Sandbox Code Playgroud)
我想替换.png为.mat, 但仅用于第二列。结果应该是这样的:
file1.png otherfile1.mat
file2.png otherfile2.mat
file3.png otherfile3.mat
...
Run Code Online (Sandbox Code Playgroud)
我如何在 Bash 中做到这一点?
Zan*_*nna 13
好吧,如果它是行的尽头......
$ sed 's/\.png$/.mat/' file
file1.png otherfile1.mat
file2.png otherfile2.mat
file3.png otherfile3.mat
Run Code Online (Sandbox Code Playgroud)
s/old/new/ 搜索和替换\. 文字点(没有转义,它匹配任何字符)$ 行结束或者要明确指定第二列,您可以使用一种awk方法...
$ awk 'gsub(".png", ".mat", $2)' file
file1.png otherfile1.mat
file2.png otherfile2.mat
file3.png otherfile3.mat
Run Code Online (Sandbox Code Playgroud)
gsub(old, new, where) 搜索和替换$2 第二列您可以替换所有.png直接串在一行结束在INPUTFILE这样的:
sed 's/\.png$/.mat/' INPUTFILE
Run Code Online (Sandbox Code Playgroud)
上面的命令不会修改INPUTFILE,只会将更改后的版本打印到终端。
要直接就地编辑文件,请将-i标志添加到sed(或-i.bak存储原始文件的备份):
sed -i 's/\.png$/.mat/' INPUTFILE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |