Cut

奇怪的剪切行為

  • December 7, 2015

我正在使用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 的實現;基本上也重建一切可能是謹慎的。

引用自:https://unix.stackexchange.com/questions/219369