Сортировка по подстроке строки (без использования разделителя)

Попробуйте:

find /etc -type f -readable

Изman find:

-readable

Matches files which are readable. This takes into account access control lists and other permissions artifacts which the -perm test ignores. This test makes use of the access(2) system call, and so can be fooled by NFS servers which do UID mapping (or root-squashing), since many systems implement access(2) in the client's kernel and so cannot make use of the UID mapping information held on the server.

Ограничение:Это не найдет файлы для чтения, если они находятся в каталоге, который не доступен для чтения. (Шляпный наконечник роайма .)

0
30.01.2020, 04:35
1 ответ

sort -u -t -k1.1,1.4 testfile
I interpret this version as -t followed by blank to mean that there is no field separator, however I suppose it could mean field separator is whitespace,

Ни то, ни другое. Токенизация аргументов, передаваемых программе в Unix, определяется оболочкой, а не программой; и в большинстве программ Unix с тех пор, если (ведущий аргумент, который является )опцией/флагом, требует значения, и вы не предоставляете его как часть того же аргумента, в качестве значения используется следующий аргумент. -t -k1.1,1.4использует -k1.1,1.4в качестве разделителя полей, усекая его до одного символа, а именно -. В результате параметр -kне распознается, поэтому выполняется сортировка с использованием определения ключа по умолчанию, которым является вся строка.

Сортировка GNU в этом случае выдает ошибку, говоря, что значение 'tab' (, т.е. значение-t)является многозначным -символом; такое поведение более полезно, но не требуется ни традицией, ни стандартом. В SunOS -, также известной как -Solaris, утилиты не требуются, и многие из них на самом деле не соответствуют XPG -и -POSIX, если вы не укажете версию xpg4 или xpg6 --, не так ли? --но на моей (теперь виртуализированной )тестовой системе Solaris 10 и /usr/bin/sort, и /usr/xpg4/bin/sortимеют менее полезное -поведение.

Если вы хотите, чтобы символ пробела использовался в качестве разделителя полей --, что было бы бессмысленно для ваших данных, не содержащих пробелов --, вам нужно сообщить оболочке ] для передачи символа пробела либо как часть аргумента -t, либо как дополнительный аргумент:

sort -t" " -k1.1,1.4
sort -t' ' -k1.1,1.4
sort -t\  -k1.1,1.4
sort "-t " -k1.1,1.4
sort '-t ' -k1.1,1.4

sort -t " " -k1.1,1.4
sort -t ' ' -k1.1,1.4
sort -t \  -k1.1,1.4

Обратите внимание, что в системах типов Unix -(независимо от того, является ли Unix -торговой маркой, которой SunOS изначально не была )«пробел» обычно означает не только символ пробела; обычно он включает как минимум пробелы и (горизонтальные )символы табуляции , а также часто «вертикальные» пробелы, такие как LF, VT, FF. Стандарт sortможет использовать только один символ в качестве разделителя полей, так что это не может быть пробел. В отличие от оболочки,и awk (по умолчанию ), анализируйте поля, используя несколько пробелов.

2
28.04.2021, 23:25

Теги

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