Вот что вы можете сделать, используя SED в версиях GNU
и BSD
, чтобы удалить первое вхождение чего-либо:
sed '2,/RE/s/\^M//' yourFile
И вот что вы можете сделать, чтобы удалить второе - или n-е - вхождение:
sed '2,/RE/s/\^M//2' yourFile
# Первое - это то же, что sed '2, / RE / s / \ ^ M // 1' yourFile
NB / RE /
остановит замену, если какая-то строка содержит RE
. Вы можете заполнить его чем угодно. ИЛИ вы можете просто использовать sed '2, $ s / \ ^ M //' yourFile
, выбор за вами.
От здесь:
--occurrence[=число]
Эту опцию можно использовать в сочетании с одной из подкоманд >
-- delete
,--diff
,--extract
или--list
, когда список файлов задан >либо в командной строке, либо через-T
.Эта опция указывает tar обрабатывать только числовое вхождение > каждого именованного файла. Число по умолчанию равно 1, поэтому
tar -x -f archive.tar --occurrence имя_файла
извлечет первое вхождение члена
filename' из >
archive.tar' и завершится без сканирование до конца архива.
Итак, в вашем случае для извлечения старой версии используйте:
tar -xf test.tar --occurrence=1 1
И для запуска удаления:
tar --delete -f test.tar --occurrence=1 1
Другой обходной путь для извлечения обеих версий — просто использовать переключатель --backup
:
tar -xf test.tar --backup
It извлечет ваши файлы, например:
1
1~
Который 1~
является старым. Если у вас более двух версий, используйте переключатель -- вхождение
.
Вы также можете использовать -w
для использования tar
интерактивного режима:
tar -xf test.tar -w
На этот раз tar
запрашивает каждое действие, вы можете выбрать первое версия или последняя версия для извлечения y/n
.