Как такое возможно, что цепочка команд, оканчивающаяся на `cat`, ничего не печатает, но повторное выполнение `cat в том Linux

Anonymous
Как такое возможно, что цепочка команд, оканчивающаяся на `cat`, ничего не печатает, но повторное выполнение `cat в том

Сообщение Anonymous »

Я запускаю следующую последовательность команд:

Код: Выделить всё

grep -Fxv "sudo: myname : 1 incorrect password attempt ; TTY=pts/3 ; PWD=/home/myname/workspace ; USER=root ; COMMAND=/usr/bin/pip uninstall ansible" ~/.log-scanner/blacklist > temp && mv temp ~/.log-scanner/blacklist && cat ~/.log-scanner/blacklist
и вывод представляет собой пустую строку. Однако если я затем введу в командной строке следующую команду:

Код: Выделить всё

cat ~/.log-scanner/blacklist
Выводит:

Код: Выделить всё

sudo: myname : 1 incorrect password attempt ; TTY=pts/3 ; PWD=/home/myname/workspace ; USER=root ; COMMAND=/usr/bin/pip uninstall ansible
именно эту строку я хотел исключить из файла.
Как это возможно? Я не могу понять, как два последовательных вызова cat могут иметь разные результаты.
Я ожидал, что результат будет одинаковым; либо в обоих случаях выводить строку, которую я пытался исключить, либо в обоих случаях ничего не выводить.
Я пробовал чередовать команды cat с синхронизацией, но результаты остаются прежними.
Изменить: для большего контекста я пытаюсь пройтись по строкам файла и удалить каждое буквальное вхождение этой строки в другом файле. , вот так:

Код: Выделить всё

while read -r line || [[ -n $line ]]
do
grep -Fxv "$line" "$blacklist" > temp && mv temp "$blacklist"
# sed -i "\#$line#d" "$blacklist"
done < "$whitelist"
но строка осталась, и я не могу понять, почему. Когда я попытался отладить его, я столкнулся с проблемой, описанной выше.

Подробнее здесь: https://stackoverflow.com/questions/791 ... g-but-exec

Вернуться в «Linux»