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