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

时间:2018-02-06 15:36:59

标签: bash for-loop rename deep-copy renaming

所以我有一个文本文件(名为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”。

1 个答案:

答案 0 :(得分:1)

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

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

s表示将“pat”替换为“xyz”,g表示全局。默认情况下,sed将在第一场比赛时停止。最后,-i表示就地