Можно попробовать следующий awk
:
awk 'BEGIN { FS = OFS = ","; } FNR == NR { x[$1] = $2; next; } { if ($7 in x) { $7 = x[$7]; } } 1' b.csv a.csv
В секции BEGIN
устанавливаем разделитель полей FS
и разделитель выходных полей OFS
на ,
. FNR == NR
- паттерн, который является истинным при чтении первого файла (b.csv
), и мы создаем массив x
с ключами из столбца $1
и значениями из столбца $2
. В последней секции мы читаем второй файл и проверяем, существует ли столбец $7
как ключ массива, и если да, то меняем значение.
Вы не можете использовать код выхода для того, что вам нужно, не в последнюю очередь потому, что код выхода представляет собой целое число от 0 до 255. Какое поведение вы бы хотели, если бы было 783 открытых файла?
Кроме того, такое использование принципиально нарушается тем, что вы полагаете, что код выхода, отличный от нуля , не является состоянием ошибки, что отдаленно не соответствует стандартам -.
Вам не нужно писать в файл. Просто пусть скрипт выводит результаты wc
#!/bin/sh
lsof /filesystem | wc -l
, а затем записать результат с помощью
openfiles=$(/path/to/openfiles.sh)
Если ваш скрипт не сложнее этого, просто добавьте его в ваш ~/.bashrc
alias openfiles='lsof /filesystem | wc -l'
, а затем
n=$(openfiles); echo $n