формат вывода команды linux - PullRequest
1 голос
/ 25 апреля 2011

Мне нужно написать Perl, точно имитирующий команду linux wc (включая и особенно формат вывода), хотя, реализовав функциональность, вывод wc действительно является головной болью, кажется, что он меняет все время, вот несколько примеров (я буду использовать □ для представления пробела) 1. wc test_input_1□□705673□□4234032□26754553□test_input_1
2. wc test_input_2□14□□79□581□test_input_2
3. wc test_input_2 -w79□test_input_2
4. wc test_input_2 -wc□79□581□test_input_2
5. cat test_input_2 | wc□□□□□14□□□□□□79□□□□□581
6. cat test_input_2 | wc -w79
7. cat test_input_2 | wc -wc□□□□□79□□□□□581

кто-нибудь знает, как форматирует вывод wc? Любая помощь приветствуется, большое спасибо.

Ответы [ 2 ]

1 голос
/ 25 апреля 2011

Спецификация Open Group для wc указывает точный формат вывода.Количество пробелов, в которых есть пробел в строке формата, не имеет значения (см. Обозначение формата файла ).

Исторически сложилось, что числа часто форматировались так, чтобы занимать семь столбцов, исключая пробелмежду ними (некоторые исторические неверные реализации имеют включающее пробел в семи столбцах, реализованный таким образом, что формат вывода становится неоднозначным, когда количество символов превышает шесть цифр).Некоторые из ваших выходных строк форматируются на основе количества столбцов в наибольшем отображаемом числе, другие, кажется, используют семь столбцов.

1 голос
/ 25 апреля 2011

Начните с

$ info wc

На странице информации дается краткое описание формата вывода.Если этого недостаточно для работы, возьмите coreutils source и прочитайте исходный код wc.

...