Программные ссылки связаны только с именем файла, а не с номером инода. Если исходный файл переименовывается, программная ссылка не работает, и ссылка теперь не знает, куда она указывает. Выкладывая эту картинку из одного из ответов (, который я не помню, я давно сохранил эту картинку в своем телефоне):
Если исходный файл переименован, my-soft-link
будет указывать на имя файла, которого больше не существует, и, следовательно, станет красным, поскольку ссылка или указатель будут повреждены. В таком случае my-soft-link
будет подобен оборванному указателю. Он указывает на несуществующий файл.
С другой стороны, с жесткими ссылками такой проблемы не возникает, поскольку жесткие ссылки указывают непосредственно на номер инода. Таким образом, если исходный файл будет переименован, my-hard-link
не станет оборванным указателем.
Таким образом, чтобы повторно активировать вашу символическую ссылку, вы можете обновить символическую ссылку, указав на переименованный файл.
ln -sfn test3 test2
Вы можете распечатать содержимое gzip-файла с помощью команды zcat
.
Итак, печать исходного файлаfile1.gz
:
$ zcat file1.gz
1 rs571093408 rs571093408 13380 C G
2 rs200000002 rs222222222 12222 D E
3 rs300000003 rs333333333 13333 F K
Один вкладыш для выполнения:
$ zcat file1.gz|awk '{print $1" "$1":"$4,$3,$4,$5,$6}'|gzip > file2.gz
Печать содержимого файла результатов file2.gz
:
$ zcat file2.gz
1 1:13380 rs571093408 13380 C G
2 2:12222 rs222222222 12222 D E
3 3:13333 rs333333333 13333 F K
Обновлено. Добавление улучшенной версии на основе комментария ниже:
$ zcat file1.gz|awk '{$2=$1":"$4}1'|gzip > file2.gz
Окончательный код, который я использовал, был:
zcat file.gz | awk '{$2=$1":"$4}1' | gzip > new_file.gz | mv new_file.gz file.gz
mv new_file.gz file.gz
в конце заменяет новый файл на старый.