Если у вас есть список путей, которые вы хотели бы просмотреть и проверить на существование, то я предполагаю, что вы хотели бы либо сделать что-то с теми, которые существуют, либо с теми, которых не существует. или для обоих наборов путей.
При стандартной оболочке это лучше всего делать в цикле.
for pathname in /the/first/path /the/second/path /some/other/path
do
if [ -e "$pathname" ]; then
printf 'Path "%s" exists\n' "$pathname"
else
printf 'Path "%s" does not exist\n' "$pathname"
fi
done
На самом деле, возврат каретки помогает определить неправильный перенос строки:
s '/^M$/{N;s/^M\n//;}' test
Как писал steeldriver, вы обычно можете произвести это ^M
с помощью ctrlV , а затем ctrlM .
Команда означает
/^M$/{...}
:В строках с разрывом страницы в конце строки выполнять команды в фигурных скобках N
ext добавляет следующую строку в буфер с новой строкой между строками s/^M\n//
s
заменяет возврат каретки + новую строку ничем (удаляет разрыв строки)Этот простой сценарий предполагает, что линия разрывается не более одного раза.В противном случае вам понадобится что-то вроде
sed 'H;1h;$!d;x;s/^M\n//g' file
Один из способов получить ^M
, представляющий новую строку (, или ввести )для замены в sed или vi — ввести:
ctrlVввод