Я так и сделал, но никогда не сталкивался с проблемой. Все данные на сервере были на месте, как и на RAID1. Я слышал, что некоторые люди сталкивались с некоторыми трудностями при этом. Вы можете потерять данные, но это вроде как 1 из 100 случаев. Я рекомендую сделать резервную копию перед разбиением RAID, это просто защита от сбоев для вас, так что ваши данные все еще там.
Это сработало:
awk -F',' 'NR==FNR{a[$1]=$2} NR>FNR{for (i=1;i<=NF;i++) $i=a[$i];print}' OFS=',' file1 file2 > fileout
Спасибо
Не думаю, что это сработает. Результат в моей системе:
,,name0
,name1,name2,name4
name4,,,
,,,,name1
,name3
,,name3
Попробуйте вместо этого
awk -F',' 'NR==FNR{a[$1]=$2; next} {for (i=1;i<=NF;i++) if (a[$i]) $i=a[$i]} 1' OFS=',' file1 file2
23,45,name0
41,name1,name2,name4
name4,5,22,100
10,20,31,51,name1
33,name3
16,111,name3
Это также можно сделать с помощьюsed
:
sed -f <(sed 's|,|$/,|;s|^|s/,|;s|$|/|' f1) f2
Как указал Кусалананда, это решение использует подстановку процессов, которую поддерживают не все распространенные оболочки. Однако есть и другие способы добиться того же эффекта.
Как это работает? Основная идея состоит в том, чтобы преобразовать файл f1
в программу sed
, которая, в свою очередь, преобразует файл f2
. Команда sed
в скобках преобразует каждую строку файла f1
в команду s///
.