Как удалить линию из файла с разграниченным трубопроводом, на основе значения в определенном поле?

Вы можете сделать это полностью в awk , но в качестве варианта здесь awk + paste раствор. Вам понадобится bash или другая оболочка, поддерживающая подстановку процессов

paste <(tail -n +2 file1) file2 | 
awk '{a["0"]=$3; a["1"]=$4; for (i=5; i<=NF; ++i) printf "%s%s", a[$i], i==NF?"\n": " "}'

tail -n +2 необходим, чтобы пропустить строку заголовка из file1 .

0
17.07.2018, 15:56
2 ответа

пример sed:

sed '/\|.*\|.*\|NULL/d' <file>

пример sed, когда в конце строки всегда стоит NULL:

sed '/NULL$/d' <file>
2
28.01.2020, 02:18
awk -F"|" '{if ($4!~/NULL/) {print $0} }'  file
2
28.01.2020, 02:18

Теги

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