Почему cut не режет в правой колонке?

Для ясности я добавляю более или менее скриптовый тест того, о чем мы говорили в комментариях. Это ядро ​​4.7.2 , где проблема тоже не возникает:

$ cd /dev/shm
$ free
              total        used        free      shared  buff/cache   available
Mem:        1794788      673948      873668       19300      247172      963316
Swap:       2097148           0     2097148
$ for i in `seq 100000`; do touch node$i; done
$ ls -1|wc -l  # oops, there are extra three pulseaudio files here
 100003
$ free
              total        used        free      shared  buff/cache   available
Mem:        1794788      738240      811944       19300      244604      890184
Swap:       2097148           0     2097148

Хорошо, мы получили объем памяти. Но rm очищает его

$ rm node*
$ free
              total        used        free      shared  buff/cache   available
Mem:        1794788      671484      896524       19300      226780      965884
Swap:       2097148           0     2097148

Совпадение не идеальное, потому что я тем временем очистил некоторые кеши. Но количество свободной памяти и памяти в кеше одинаково в начале и в конце этого небольшого эксперимента.

Поэтому да, проблема возникает только в старой версии ядра. Это будет означать, что была ошибка, но она уже исправлена.

2
04.11.2016, 01:44
1 ответ

У вас есть вкладки; каждая вкладка считается одним символом с точки зрения cut , но может занимать больше места, чем на экране. Более того, он занимает количество, которое зависит от того, где в строке он выводится ...

Каждая строка, длина которой превышает 64 символа, имеет соответствующий пробел, который совпадает с табулятором (до сих пор в большинстве сред это восемь символов. столетие):

3"fcALD`&L\#Ls7fP!Gs9Ksjv\)     ?Fm9]R#oRlEb%&=R{-zRvRE /})^uM:H9sq
                           ^ tab here
                                ^ tabstop here
1234567812345678123456781234567812345678123456781234567812345678

Когда вы копировали и вставляли результат для второго набора измерений, пробелы, до которых были расширены вкладки, были скопированы, поэтому wc -c вместо этого подсчитал их.

6
27.01.2020, 21:54

Теги

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