Множественная замена в AWK для файла tsv [REFACTOR]

Хорошо. Я нашел то, что мне было нужно:

passphrase=$(head -n 1 /var/secret.key)
gpg --symmetric --batch --yes --passphrase $passphrase --output some.gpg  toEncrypt.txt
0
19.03.2021, 10:33
3 ответа

Что вы ожидаете от оператора запятой в этом случае, что он делает в соответствии с руководством?

Если вы перепробовали все, пробовали ли вы использовать оператор И для создания условия И?

awk '$2 != "$ID1$" && $2 != "$ID2$"' myfile3.tsv > output

Если вы хотите что-то необычное, вы можете использовать массив в awk.

Если условия поиска не встречаются в других частях строки, вы можете использовать grep -v.

0
28.04.2021, 22:58

Один из способов добиться желаемого заключается в следующем. Переменную lim вы заполняете, чтобы получить необходимое количество параметров.

awk -F '\t' -v lim=9 '
  BEGIN {
    OFS = FS
    for (i=1; i<=lim; i++) a["$ID"  i "$"]
  }
  $2 in a {next}
1'  yourfile.tsv
1
28.04.2021, 22:58

Если вы не можете сгенерировать идентификаторы и вместо этого должны перечислить их вручную, это будет:

awk -v ids='$ID1$ $ID2$' '
    BEGIN { split(ids,tmp); for (i in tmp) idarr[tmp[i]] }
    !($2 in idarr)
' file

или если они хранятся каждый в отдельной строке в файле с именемids:

awk '
    NR==FNR { idarr[$1]; next }
    !($2 in idarr)
' ids file

или подобный подход, заканчивающийся поиском по хешу.

0
28.04.2021, 22:58

Теги

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