重命名文本文件中的内容?

Renaming the content in a text file?

所以我有一个包含以下内容的文本文件(名为 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"。

如果您不想重命名文件,您可以尝试 sed

sed -i 's/pat/xyz/g' f2.txt

s 表示用“pat”代替“xyz”,g 表示全局。默认情况下 sed 将在第一场比赛中停止。最后 -i 表示 inplace