У Вас, вероятно, есть один процессор с двумя ядрами и hyper поточная обработка технологии. Поточная обработка hyper удваивает центральные процессоры, о которых сообщают.
2 cores + hyper threading = 4 reported CPUs
Одна утилита, которая должна действительно учитывать ширину дисплея, это fold
: к сожалению, у нее, похоже, нет возможности отбросить, а не обернуть. Хотя это, вероятно, ужасно неэффективно, вы, однако, могли бы сделать что-то вроде
while read -r line; do fold -w80 <<< "$line" | head -n1; done < file
-121--48661- Может ли ваш ПК иметь плохую батарею BIOS, а когда Вы останавливаетесь и затем включаете ПК, время BIOS сбрасывается?
-121--246412- Я думаю, что вы ищете развернуть
и/или unext
. Похоже, вы пытаетесь обеспечить, чтобы ширина \t
ab считывалась как 8 символы, а не как один символ. fold
также сделает это, но он обернет свой вход в следующую строку, а не усечит ее. Я думаю, вы хотите:
expand < input | cut -c -80
expand
и unestand
оба POSIX указаны :
expand
должна записать файлы или стандартный ввод в стандартный вывод с \t
ab символами, замененными одним или несколькими пространства символами, необходимыми для вставки в следующую позицию табуляции. Любые символы backspace копируются в выходные данные и приводят к уменьшению количества позиций столбцов для расчетов табуляции; число позиций столбцов не должно уменьшаться ниже нуля. Довольно просто. Итак, вот посмотрите на то, что это делает:
unset c i; set --;
until [ "$((i+=1))" -gt 10 ]; do set -- "$@" "$i" "$i"; done
for c in 'tr \\t \ ' expand; do eval '
{ printf "%*s\t" "$@"; echo; } |
tee /dev/fd/2 |'"$c"'| {
tee /dev/fd/3 | wc -c >&2; } 3>&1 |
tee /dev/fd/2 | cut -c -80'
done
, пока
цикл в верхней части не получит набор данных, как...
1 1 2 2 3 3 ...
Он printf
имеет флаг % * s
arg набивки, поэтому для каждого из тех, кто находится в наборе printf
, будет заполнено столько места, сколько указано в номере аргумента. К каждому из них добавляется символ \t
ab.
Все тройники
используются для отображения эффектов каждого фильтра при его применении.
И эффекты таковы:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
66
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8
105
Эти строки выстроены в два набора, как...
printf...; эхо
tr...
или развернуть
вырезать
wc
Первые четыре строки являются результатами фильтра tr
- в котором каждая \t
ab преобразуется в один космос .
И в нижней четверке результаты расширить
цепочку.
Для интересующихся. Оказалось, что была какая-то коррупция ЛВМ. Я предполагаю, что я изменяю размер разделов LVM. Удалось получить Live CD загрузки CentOS 7 и каждый раз, когда я пытаюсь монтировать нужный раздел, я получаю Kernel Panic. Так что мой наконечник любому. Если вы изменили размер разделов LVM, это, вероятно, является причиной паники.
-121--150680-Я использую заполнение вкладки все время, чтобы сэкономить при вводе. Совершенно не думал об использовании, когда я не заполнял командную последовательность.
«\t »получает колокол
«\t» получает колокол
«\t\t »получает список каталогов
«\t\t» получает Дисплей всех возможностей (а затем, если я нажму «\t »после этого на новой командной строке, я получу его снова вместо колокола)
-121--26580- Поскольку вкладки больше предназначены для выравнивания, чем для разграничения, одним из способов может быть использование столбца
, а затем вырезание
:
column -s '\t' -t <some-file | cut -c -80
Кажется, что столбец
не является POSIX. Это часть BSD utils на Ubuntu, поэтому я предполагаю, что это довольно кросс-платформа.
Я использую заполнение вкладки все время, чтобы сэкономить на вводе. Совершенно не думал об использовании, когда я не заполнял командную последовательность.
«\t »получает колокол
«\t» получает колокол
«\t\t »получает список каталогов
«\t\t» получает Дисплей всех возможностей (а затем, если я нажму «\t »после этого на новой командной строке, я получу его снова вместо колокола)
-121--26580- Поскольку вкладки больше предназначены для выравнивания, чем для разграничения, одним из способов может быть использование столбца
, а затем вырезание
:
column -s '\t' -t <some-file | cut -c -80
Кажется, что столбец
не является POSIX. Это часть BSD utils на Ubuntu, поэтому я предполагаю, что это довольно кросс-платформа.
Использование awk
:
awk '{ $0 = substr($0, 1, 80) }1' file
На основе ответа Криса Дауна здесь .
Одна из утилит, которая должна быть по-настоящему отображать ширину, это fold
: к сожалению, у нее, кажется, нет возможности отбрасывать вместо обертывания. Хотя она, вероятно, ужасно неэффективна, тем не менее, вы можете сделать что-то вроде
while read -r line; do fold -w80 <<< "$line" | head -n1; done < file
Предложение Дона в комментариях было хорошим началом.
Это то, что мне нужно было для того, чтобы он (в основном) заработал:
pr +1 -1 -t -m -l1000 -w 80 tabfile
Флаг -m
был нужен для того, чтобы флаг -w
вступил в силу для одного столбца. Для обозначения этого в man-странице может понадобиться некоторое переписывание.
При попытке обходного пути я обнаружил, что pr
выводит \t
символы, поэтому подача его результатов на cut
привела к той же самой проблеме.
-1
(флаг столбца) конкретно говорит в man-странице:
Эта опция не должна использоваться с -m.
Однако без этой опции pr
усекает строки волей-неволей, намного короче заданной длины.
pr
также вставляет пробел перед (или после?) каждым словом в поле (т.е. в каждом месте, где есть один пробел, есть два после обработки). Если слов слишком много, вставляемые пробелы игнорируют ограничение -w
(создавая обходной путь). Но, как ни странно, другие, не разделенные пробелами (т.е. расположенные белыми пробелами), "столбцы" остаются выстроенными.