我有一个文本文件,其中包含一些不同的UUID字符串,我想用新的不同的UUID字符串替换所有的UUID字符串,在Bash中如何轻松地做到这一点?
awk '
{
if ($0 ~ /^[a-fA-F0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$/)
{
system("uuidgen")
}
else
{
print $0
}
}' file-with-uuids > new-file-with-uuids
# To override the old file with the new:
mv -f new-file-with-uuids file-with-uuids
sed "s/[a-fA-F0-9]\{8\}-[A-Fa-f0-9]\{4\}-[A-Fa-f0-9]\{4\}-[A-Fa-f0-9]\{4\}-[A-Fa-f0-9]\{12\}/$(uuidgen)/g"
- Max Bileschi这样怎么样:
sed -i "s/$OLDUUID/$NEWUUID/g" file.txt
从你的描述中无法确定,如果你有多个(不同的)UUID需要替换,你可能需要链接这样的操作。
awk '/[a-fA-F0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}/{"uuidgen" | getline uuid; close("uuidgen"); gsub(/[a-fA-F0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}/, uuid)};{print}' myfile > mynewfile