所以我有一个文本文件(名为f1.txt),其中包含以下内容:
subj00000_xyz
subj00001_xyz
subj00002_xyz
subj00003_xyz
subj00004_xyz
现在我有另一个文本文件(名为f2.txt)包含以下内容:
subj0001_01_pat
subj0001_03_pat
subj0002_03_pat
subj0004_01_pat
subj0005_01_pat
重命名后我希望每一行都是:
subj0001_01_xyz
subj0001_03_xyz
subj0002_03_xyz
subj0004_01_xyz
subj0005_01_xyz
所以..我希望第一部分“subj0001_01”来自f2.txt,并保留f2.txt“_xyz”的其余命名约定。
因此,f1.txt
中的每个主题(或行)对应f2.txt
中的同一行。
例如:subj00003
对应subj0004_01
我的问题是:
如何在f1.txt
中重命名内容(每一行),使其名称来自f2.txt
?
此外,每个文件中的内容都是非常不同的..它是特定文件的目录,所以我不想覆盖它。我想重命名每一个。
我在考虑做这样的事情:
i=0
for s in f2.txt; do ss=$(printf '%05d' $i); echo ${ss}.nii $s; ((i++)); done
总结一下,我想要编辑或重命名f1.txt的内容。通过将f1.txt中的“subj00001”替换为f2.txt中的“subj0001_01”。
答案 0 :(得分:1)
如果您不想重命名文件,可以尝试sed
sed -i 's/pat/xyz/g' f2.txt
s
表示将“pat”替换为“xyz”,g
表示全局。默认情况下,sed
将在第一场比赛时停止。最后,-i
表示就地