как получить вывод awk в массив в сценарии оболочки - PullRequest
0 голосов
/ 24 октября 2018

Я сравниваю два файла и отображаю строки, которые не похожи, когда я просто сохраняю

echo $(awk 'FNR==NR{f[$0]+=1; next} !($0 in f)' $file1 $file2)

Я могу получить значения.

Когда я пытаюсь сделатьто же самое, передавая в массив, я получаю ": команда не найдена" ошибка

declare -a myarr=()
myarr=$("$(awk 'FNR==NR{f[$0]+=1; next} !($0 in f)' $file1 $file2 )")

Пожалуйста, помогите, заранее спасибо.

1 Ответ

0 голосов
/ 24 октября 2018

Удалить кавычки плюс ведущий доллар:

myarr=$("$(awk 'FNR==NR{f[$0]+=1; next} !($0 in f)' $file1 $file2 )")

должно быть

myarr=($(awk 'FNR==NR{f[$0]+=1; next} !($0 in f)' $file1 $file2))

Проверить:


Кстати, ваша команда awk не будет печатать строки, которыеуникальны для file1.Возможно, вам нужна команда comm, но обратите внимание, что comm ожидает отсортированный ввод:

comm -13 <(sort "${file1}") <(sort "${file2}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...