Pourquoi la coupe ne coupe-t-elle pas dans la bonne colonne?

# uname -mrs OpenBSD 6.0 amd64 # RANDOMNUMBER() { /usr/bin/openssl rand -hex 64 | tr -dc 0-9 | /usr/bin/cut -c-4;} # while true; do WTF=$(/usr/bin/ssortingngs /dev/arandom | head -$(RANDOMNUMBER) | sort -R | /usr/bin/perl -pe 's/\n//g' | /usr/bin/cut -c1-63); echo "$WTF"; echo "$WTF" | wc -c; done !+{l^RQ-QuK=iVYC\ud#pqNw?nJ"oyizU}NI5~0\HEagHv7`/6PI$|b_1)59Aj= 64 3"fcALD`&L\#Ls7fP!Gs9Ksjv\) ?Fm9]R#oRlEb%&=R{-zRvRE /})^uM:H9sq 64 Q|Ik^.zuYu:|_DTt>)q48;[JVwX}F@yU)hu,~v=Wj*"ra'g=@#hJ$.ur\Ru'WMV 64 lTYU6V2qm;[e;.dsxW+mWqf]LCylFsY,V7+71i}/6L)m<RtuCxH6,et<i[N(NV 64 >apV:8T e3 Y<ga$h*+9>4`kanC 35OHoG%\gG8vvWU?rM%XYuV*4?UIWVvB<!U 64 #b8vw:L!OvW 73/-iUPw}Ge|$ka{'E=tkTHmzb)1syK!fSN]_As'D>KGe_k<o= 64 O5='9b}.NGChC]D{{ =^#tg7;EhzDJag`Rz/L<=LJ[h*aLI [2xPbz__+K_Bc| 64 E\AxbSAu6seR=:-uwG$h86;r\gs(Ni0%95<O.+Yts)br9xd*>b`f K!%Q_%+9I- 64 8RXi=aJL3siO!PM5l]>~(5$bgp.#Z|p1,d6au-^0`mD9+Cdk@*].05g(:1,}f"R 64 K\_a~oim<dq_^,JBjb$sYA,Icv@kOVWi2'z+us2BzW|~@l+iD3@euM|iS;"0tw& 64 bI[Aev\{[YN"a^$)j'W[\4r?Ey[ !Jn32V6`PE(6WAqL~NYg&/{Jw > _uAS}i 64 I|jm@onzPfAhK5HJq:V h<p-<_oPvS68)2L\&4)CWM|GYv0l}8= 7 ZpW wH}UR 64 i_x?KW3<v7/Pw w6>gXw7#HE]n,d4mj8'my@)*15m]dK(+9[o!h<w^ $$PS)Q4@ 64 wJ1pv[3sHJrpXV=cc{2%0A,F-.3;`M^cvV6E&|B"`@V+RYs dlS*yEqsV_ $G6 64 M_iq/+ |>*@CC4G.-?9s@;0tR^>&dh]5,sQu.8akCJU01qxiX5TUe&}=I_K;X%` 64 ^C # 

De cela, je ne peux pas comprendre quelques lignes (en cours d'exécution manuellement …):

 # echo '>apV:8T e3 Y<ga$h*+9>4`kanC 35OHoG%\gG8vvWU?rM%XYuV*4?UIWVvB<!U' | wc -c 69 # # echo 'wJ1pv[3sHJrpXV=cc{2%0A,F-.3;`M^cvV6E&|B"`@V+RYs dlS*yEqsV_ $G6' | wc -c 76 # 

Pourquoi "couper" faire une telle chose? Je lui ai demandé de couper à 63 caractères. Mais il donne parfois des lignes plus longues que 63 que je peux prouver en sélectionnant manuellement la sortie, en la mettant dans un écho et en utilisant "| wc -c" .. peut-être y a-t-il un bug dans la command "cut" concernant les espaces?

Pour le premier exemple de ligne manuelle, le script supérieur donne 64, mais le vérifier manuellement révèle qu'il est en fait 69.

Vous avez des tabs là-dedans; chaque onglet count comme un seul caractère du sharepoint vue de cut , mais peut occuper plus d'espace que celui affiché à l'écran. De plus, il occupe une quantité qui varie en fonction de l'endroit où elle est sortie …

Chaque ligne qui apparaît plus long que 64 caractères a un espace correspondant qui s'aligne avec un tabstop (huit caractères dans la plupart des environnements jusqu'à présent ce siècle):

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

Lorsque vous avez copié et collé la sortie pour votre deuxième set de mesures, les espaces sur lesquels les tabs ont été développés ont été copiés, donc wc -c comptés.