Одним из возможных решений является использование xscreensaver. Вы можете настроить его с помощью
$ xscreensaver-demo
на использование затухающей анимации, а затем запустить пустую заставку и/или выключить монитор.
После настройки вы можете активировать его с помощью
$ xscreensaver-command -lock
Недостатком этого метода является то, что он может помешать использованию xscreensaver в качестве обычной заставки.
Попробуйте:
$ awk -F, -v OFS=, 'FNR==NR{a[$1]=$2; next} NF==1{$2=a[$1]} 1' source.txt test.txt
A,1000
C,2500
D,5000
B,3000
E,4000
Как это работает:
-F, -v OFS=,
Это устанавливает запятую в качестве разделителя полей ввода и вывода.
FNR==NR{a[$1]=$2; next}
При чтении первого файла source.txt
сохранить значение второго поля $2
в ассоциативном массиве a
под ключом первого поля $1
.Затем пропустите остальные команды и перейдите к строке next
, чтобы начать заново.
NF==1{$2=a[$1]}
Если в текущей строке есть только одно поле, присвойте второму полю значение в ассоциативном массиве a
.
1
Это короткая -рука для печати строки .
С любой версией awk мы можем сделать постоянное обновление файла test.txt
с рекомендуемым ():
awk -F, -v OFS=, 'FNR==NR{a[$1]=$2; next} NF==1{$2=a[$1]} 1' source.txt test.txt >temp && mv temp test.txt
В качестве альтернативы, если у вас есть последняя версия GNU awk
(, иногда называемаяgawk
):
awk -i inplace -F, -v OFS=, 'FNR==NR{a[$1]=$2; print; next} NF==1{$2=a[$1]} 1' source.txt test.txt
Я сделал описанным ниже способом, и он работал нормально
команда:
for i in `awk -F "," '{print $1}' file2`; do k=`awk -F "," -v i="$i" '$1 == i {print $2}' file1`; echo $i;echo $k;done| sed "N;s/\n/,/g"
выход
A,1000
C,2500
D,5000
B,3000
E,4000