Cut
奇怪的剪切行為
我正在使用
cut (GNU coreutils) 8.24
.命令:
echo "TEST=test" | cut -d"=" -f2-
輸出Ttest
。我不認為這是預期的行為。是我用錯了還是我的有什麼問題
cut
?
複製問題歸結為 libc 的提供者。也就是說,它似乎是 uclibc 中的一個錯誤;見:https ://bugs.busybox.net/show_bug.cgi?id=4099
在某些情況下,當被告知列印欄位 2 時, cut 會列印欄位 1 的第一個字元和欄位 2 的所有字元——例如:
printf "4123\t2\t3\t4\t5\n" | cut -f 2
列印出 42;不只是 2。我確實在那個剪切上執行了 strace,它確實表明剪切正在列印整條線。
該錯誤似乎與它希望如何處理沒有分隔符的行有關。所以現在的解決方法是使用“-s”標誌;像這樣:
printf "4123\t2\t3\t4\t5\n" | cut -f 2 -s
正如預期的那樣列印'2’。
我想大多數遇到這種情況的人都在使用 buildroot;我建議根據該連結修改 uclibc 的配置。主要這只是意味著:
make uclibc-menuconfig Select y for 'String and Stdio Support --> Provide a macro version of [getc|putc]'
請注意,因為這正在改變 libc 的實現;基本上也重建一切可能是謹慎的。