Полноерешение awk:
awk 'NR==1{ len=split($0,a_pos); for(i=1;i<=len;i++) a_keys[a_pos[i]]=i }
NR>1{ if(!r[$1]++) { fn="file"++c; print "Name\tID\t"$1 > fn }
print $1,$2,$(a_keys[$1]) > fn
}' OFS='\t' file
len=split($0,a_pos)
-разбивает 1-ю строку на массив "ключей" (массив a_pos
индексируется целыми числами)
for(i=1;i<=len;i++) a_keys[a_pos[i]]=i
-преобразование a_pos
в массив a_keys
, который будет проиндексирован строковыми ключами (для дальнейшей обработки)
fn="file"++c
-создание имени файла
Просмотр результатов:
for f in file[0-9]*; do (echo "$f"; cat "$f"; echo); done
Выход (file1
, file2
, file3
и file4
последовательно):
file1
Name ID ABC12
ABC12 123456 XX
ABC12 123456 XX
file2
Name ID ABCD12
ABCD12 123456 YY
ABCD12 123456 YY
file3
Name ID ABCD123
ABCD123 123456 ZZ
ABCD123 123456 ZZ
file4
Name ID ABCD1234
ABCD1234 123456 JJ
ABCD1234 123456 JJ
Наконец-то я нашел решение
просто запустите эту команду
:/# xfs_repair -v -L /dev/dm-0
Спасибо JH отhttps://unix.stackexchange.com/a/364041/381573