Find exec. Почему {} нельзя использовать в качестве имени выходного файла?

No se puede hacer esto solo con sed. Pero con awk:

awk '
    # remember the wanted sequences
    NR == FNR {seqs[$1]; next}

    $1 ~ /^>/ {
        # get the sequence name
        seq = $1
        sub(/^>/, "", seq)
        p = 0
        # if it is in the list, set up the file to print to
        if (seq in seqs) {
            f = seq ".txt"
            p = 1
        }
    }
    p {print > f}
' list.txt sequences.txt 
2
08.07.2019, 14:12
1 ответ

Все дело в том, когда и какой оболочкой интерпретируется команда. В первом случае ваша оболочка командной строки интерпретирует >, создавая локальный файл еще до запуска find. Во втором подоболочка делает это после того, как find заменяет {}, поэтому он работает, как и ожидалось.

1
27.01.2020, 22:16

Теги

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