Всегда нужно удовлетворять зависимости, поэтому они так и называются.
Тем не менее, лучший способ установки скачанного .deb
пакета ИМХО:
sudo apt-get install./some_package_name_in_current_directory.deb
Конечно, всегда можно пойти наоборот вот так:
sudo dpkg --install./some_package_name_in_current_directory.deb
sudo apt-get install --fix-missing
Но я нахожу это громоздким.
-121 ---213130 -Используя инструмент GNU sed
, мы можем подойти к этой проблеме следующим образом:
sed -e '
1!s/,/\n&/2
/\.app\n/s/,/,INVALID,/
s/\n//
' file.csv
Читать как:
° Only for lines that are not the first, meaning, skip the header from being considered for processing, whilst for the others, place a marker at the second occurrence of the comma.
° Any line that has the 2nd field terminating in a.app append the string INVALID after the first field.
° Now take away the marker.
° N. B. Lines whose 2nd field doesn't comprise *.app are passed on unmodified.
awk -F, -vOFS=, '$2 ~ /\.app$/ { for (i = NF + 1; i > 2; --i) $i = $(i-1); $2 = "INVALID" } 1' file >newfile
Это создаст newfile
из file
. Команда awk
устанавливает разделитель поля ввода и вывода в виде запятой, а затем проверяет значение второго столбца на соответствие регулярному выражению, которое соответствует строке .app
в конце значения. Если тест проходит успешно, поля записи сдвигаются вправо на один шаг, освобождая место для строки INVALID
в качестве нового второго поля.
Завершающую строку 1
можно заменить на { print }
(, так будет выводиться каждая строка ).
С данным примером данных выходной файл будет содержать
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
Awk
подход:
awk 'BEGIN{ FS = OFS = "," }NR > 1 && $2 ~ /.*\.app/{ $2 = "INVALID" OFS $2 }1' file
NR > 1 && $2 ~ /.*\.app/
-если номер записи больше1
(все, кроме первого )и 2-е поле $2
соответствует шаблону/.*\.app/
Выход:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok