Извлечение символов после конкретного текста

Хорошо, позволяет, помещает некоторый свет на самые основы полномочий файла, и затем мы переместимся в Ваш конкретный случай.

Полномочия

Основные полномочия файла:

  1. r ead - дает способность считать содержание файла.
  2. w обряд - дает способность записать в тот файл.
  3. e x ecute - дает способность выполнить файл или сценарий.

В случае каталогов имена являются тем же, но у них есть немного отличающееся значение:

  1. r - дает способность считать названия файлов в каталоге, но ничем больше.
  2. w - дает способность создать файл в каталоге или записи в файл, который уже существует.
  3. x - дает способность считать содержание определенного файла в каталоге, но не позволяет перечислять файлы в нем (Вы должны прочитать полномочия сделать это). Это также позволяет изменяться (CD) в этот каталог.

Пользователи, группы и другие

Каждый файл и каталог имеют атрибут владельца и группы. Можно проверить их путем вызова ls -l команда или путем рассмотрения индикаторов в программном обеспечении как клиент FTP. Давайте посмотрим пример:

-rwxr-xr-- 1 jdoe zeppelins  0 08-29 21:50 example_file

Здесь Вам назвали файл example_file, это было создано в 21:50 на 29-08 и имеет длину 0 байтов. Его владелец является пользователем с именем username, и это принадлежит группе zeppelins.

Теперь позволяет взгляду на полномочия файла -rwxr-xr--.

  • Первый символ указывает на тип файла - единственный тире - средства, что это - регулярный файл (не ссылка или каталог).
  • Следующая триада rwx указывает, что пользователь jdoe может читать, запишите и выполните этот файл.
  • Следующее r-x средства, что все члены группы zeppelins может читать и выполниться, но не изменить этот файл
  • Наконец, r-- указывает, что пользователи, которые не являются jdoe и не принадлежите группе zeppelins может только считать этот файл.

Теперь назад к Вашему случаю

  1. При входе на пути WS_FTP, Вы идентифицируетесь как пользователь с именем пользователя, которое Вы ввели при входе в систему. Можно быть владельцем некоторых файлов, но Вам не нужно к (могут быть файлы, которым указали другого владельца).

  2. Веб-браузер не получает доступ к файлам. То, что получает доступ к ним, является веб-сервером, который читает файл и затем подает Ваш браузер с его содержанием. Веб-сервер может работать под именами как apache httpd или подобный, но если Вы используете хостинг, он может также идентифицировать себя как inetuser. Если это не имеет место, это получает доступ к файлу как к другому пользователю.

  3. Сценарии PHP должны быть читаемы и перезаписываемы человеком, который изменяет их (по всей вероятности владелец), и читаемый, но не перезаписываемый веб-сервером.

  4. Для простого Сценария PHP, отредактированного jdoe, под предположением тот веб-сервер работает под webserver имя, соответствующие полномочия были бы -rwxr-----. В некоторых случаях это может также быть потребность быть читаемым некоторыми другими пользователями - в этом случае -rwxr--r-- может быть более соответствующим.

  5. Поскольку файл PHP читал, полномочия достаточно.

  6. Лучшая идея состояла бы в том, чтобы сделать быстрый тест - удаляют все полномочия для группы для определенного файла и проверку, если можно все еще получить доступ к нему. Моя ставка - это inetuser псевдоним для веб-сервера, и таким образом, Ваши файлы должны иметь доступ для чтения для этой группы.

  7. Для загрузки файлов необходимо создать отдельный каталог, без чтения или выполнить права, но с доступом для записи.

2
11.02.2014, 00:53
3 ответа

Другая опция состоит в том, чтобы передать Ваш текст по каналу в grep и сократить:

grep -o ' at .*$' foo.txt | cut -c5-

Это извлечет самую длинную строку для каждой строки, которая запускается с 'в'. Сокращение затем обрежет продвижение 'в'.

2
27.01.2020, 21:52

Иначе должен был бы заменить первое вхождение at с вкладкой поэтому теперь у Вас есть файл с разделением табуляцией, и можно использовать awk правильно:

$ sed 's/ at /\t/' foo.txt | awk -F'\t' '{print $1" :: "$2}'
Assistant director :: Hollywood studios
Student :: University of Texas at Arlington

Или, то же самое в Perl:

$ perl -ne '/(.+?) at (.+)/; print "$1 :: $2\n"' foo.txt

или даже

$ perl -F'\sat\s' -lane 'print "$F[0] :: @F[1..$#F]"' foo.txt
3
27.01.2020, 21:52

Можно использовать at как разделитель столбцов в awk. Следующее должно работать:

awk -F'at' '{print $2}' foo.txt
2
27.01.2020, 21:52
  • 1
    Некоторые слова будут включать те буквы вместе... Кроме того, Вам были бы нужны 3$ в случае Техаса at Арлингтон. –  jasonwryan 11.02.2014, 01:04
  • 2
    ага глюк! позвольте мне думать. –  mkc 11.02.2014, 01:05

Теги

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