$ apt policy firefox
firefox:
Installed: 48.0+linuxmint1+sarah
Candidate: 48.0+linuxmint1+sarah
Version table:
49.0~b2+build1-0ubuntu0.16.04.1 500
500 http://ppa.launchpad.net/mozillateam/firefox-next/ubuntu xenial/main amd64 Packages
*** 48.0+linuxmint1+sarah 700
700 http://mint-mirror.gwendallebihan.net/packages sarah/upstream amd64 Packages
100 /var/lib/dpkg/status
48.0+build2-0ubuntu0.16.04.1 500
500 http://ftp.u-picardie.fr/mirror/ubuntu/ubuntu xenial-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages
45.0.2+build1-0ubuntu1 500
500 http://ftp.u-picardie.fr/mirror/ubuntu/ubuntu xenial/main amd64 Packages
$ cat /etc/apt/preferences.d/official-extra-repositories.pref
Package: *
Pin: origin build.linuxmint.com
Pin-Priority: 700
На основе Как выбрать пакеты из PPA? {{1 }} Добавьте следующее правило в /etc/apt/preferences.d/official-extra-repositories.pref
, чтобы установить приоритет PPA (будет использоваться наивысший Pin-Priority
) :
Package: *firefox*
Pin: release o=LP-PPA-mozillateam-firefox-next
Pin-Priority: 800
Затем обновите и обновите
sudo apt-get update
sudo apt-get upgrade
awk 'FNR==NR && $2 == "Weight:"{ weights[spotted++]=$3} FNR!=NR && $1 != "WGHT" { print } FNR!=NR && $1=="WGHT" { print "WGHT", weights[replaced++]} ' in1 in2 > out2
Это создаст новый файл out2
с нужными вам выходными данными. Затем его можно перемещать куда угодно.
$ cat out2
asdajskdha
kjashdjahsd
WGHT 0.546
На самом деле вы можете сделать это с помощьюsed
(и другого инструмента для сопоставления с первым файлом ). Например:
$ sed -E "s/(WGHT\s*).*/\1$(grep -oP 'Recommended Weight: \K[0-9.]+' fileA)/" fileB
asdajskdha
kjashdjahsd
WGHT 0.546
Или просто сначала сохраните его в переменной:
$ wght=$(sed -En 's/Recommended Weight: *([0-9.]+)/\1/p' fileA)
$ sed -E "s/(WGHT\s*).*/\1$wght/" fileB
asdajskdha
kjashdjahsd
WGHT 0.546
Этот скрипт создает new_file_b.txt
.
Использование:./script.sh file_a.txt file_b.txt > new_file_b.txt
#!/bin/bash
awk '
/Recommended Weight: /{
value=$3;
}
NR != FNR {
if($1 == "WGHT") {
print $1 OFS value;
} else {
print;
}
}
' "$1" "$2"
С помощью GNU sed
вы можете сделать это следующим образом:
sed -Ez '
N;s/.*\nRecommended Weight: (\S+)\n.*\x00(.*\nWGHT[[:blank:]]+)\S+\n/\2\1\n/
' fileA fileB
Там, где опция -E
включает опции extended regex facility
и -z
, каждый файл обрабатывается как одна строка, а несколько файлов разделяются нулем (\0
).