Обновить строки, ссылаясь на другой файл

Одним из возможных решений является использование xscreensaver. Вы можете настроить его с помощью

$ xscreensaver-demo

на использование затухающей анимации, а затем запустить пустую заставку и/или выключить монитор.

После настройки вы можете активировать его с помощью

$ xscreensaver-command -lock

Недостатком этого метода является то, что он может помешать использованию xscreensaver в качестве обычной заставки.

1
15.05.2019, 07:29
2 ответа

Попробуйте:

$ 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

Как это работает:

  1. -F, -v OFS=,

    Это устанавливает запятую в качестве разделителя полей ввода и вывода.

  2. FNR==NR{a[$1]=$2; next}

    При чтении первого файла source.txtсохранить значение второго поля $2в ассоциативном массиве aпод ключом первого поля $1.Затем пропустите остальные команды и перейдите к строке next, чтобы начать заново.

  3. NF==1{$2=a[$1]}

    Если в текущей строке есть только одно поле, присвойте второму полю значение в ассоциативном массиве a.

  4. 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
3
27.01.2020, 23:30

Я сделал описанным ниже способом, и он работал нормально

команда:

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
-1
27.01.2020, 23:30

Теги

Похожие вопросы