Bash — найти пары идентификаторов в одном файле, указанном в другом файле

La sintaxis de configuración de Netplan es YAML, y la configuración dhcp4toma un valor booleano.

Segúnhttp://yaml.org/type/bool.htmllos valores aceptables son y/ n, yes/ no, true/ falsey on/ off, escritos en minúsculas, con Capital Inicial, o TODO EN MAYÚSCULAS.

Así que todas las formas que enumeraste son correctas.

La forma canónica ("la más correcta" si se debe hacer una distinción )sería menor -caso y/ n.

Sin embargo, la definición dice:

A Boolean represents a true/false value. Booleans are formatted as English words (“true”/“false”, “yes”/“no” or “on”/“off”) for readability and may be abbreviated as a single character “y”/“n” or “Y”/“N”.

Entonces puede usar cualquiera de esos formularios, el que le resulte más fácil de leer.

0
25.06.2019, 13:52
1 ответ

Вы почти у цели. Цикл чтения должен нормально работать в этой ситуации, поэтому что-то вроде этого:

while read -r line; do
    id1=$(echo "$line" | cut -d ' ' -f 1)
    id2=$(echo "$line" | cut -d ' ' -f 2)
    grep -w "${id1}.*${id2}" "$F2"
done < "$F1"

Но это также потенциально может возвращать ложные срабатывания, если идентификаторы, которые вы ищете, присутствуют где-либо в других полях данных. Если вы можете гарантировать, что поля идентификатора в F2 всегда отображаются в столбцах 1 и 5, я бы рекомендовал также проверить положение поля. Это можно сделать довольно быстро, набрав awkвместо строки grep:

.
awk -v id1="$id1" -v id2="$id2" '$1 == id1 && $5 == id2 {print $0}' "$F2"

Это примерно говорит: «Для каждой строки в F2, если столбец 1 имеет id1, а столбец 5 — id2, вывести всю строку».

Отказ от ответственности, я не проверял это.

2
28.01.2020, 02:22

Теги

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