Cut
cut 命令上的分隔符參數是否總是希望它位於字元串之間?
我
cut
今天注意到命令的一些東西,不知何故我以前從未註意到,即使我已經使用和使用它們很長時間了。從字元串
/users/developer/
中,我想提取users
. 所以,我所做的是,echo `pwd` | cut -d '/' -f1
這並沒有給我任何回報。我的假設是,由於我已指定
/
為分隔符,它應該在找到分隔符後返回給我的第一個欄位。經過一些調整,我意識到我可以得到我想要的輸出,當我改變我的命令來檢索
f2
echo `pwd` | cut -d '/' -f2
它讓我想到,分隔符總是希望在它的左側有一些東西,這就是為什麼在嘗試檢索第一個欄位時,它沒有返回任何東西,當我嘗試檢索第二個欄位時,我得到了我所期待的。
從邏輯上講,它對
delimiter
. 我只是想知道,delimiter 參數在 cut 命令中真的是這樣工作的嗎?換句話說,我的推斷是否正確(分隔符總是希望某些東西在分隔符的左側)
f1
是空的,就像 first 之前的一樣/
。echo "/some/path/to/some/location" | cut -d '/' -f1 | +--- empty
f1
是介於echo "
和 first之間的內容/
。換句話說:空不是不存在的。或者一個字元串/欄位可以沒有字元,如
""
.例如,如果您查看以下內容,可能會更清楚:
[In Data] [Output fields] 1 2 3 4 5 -f A:B::D:E => A, B, , D, E A::C:D:E => A, , C, D, E :B:C:D: => , B, C, D,
左側、中間或右側 - 是否為空。一個領域就是一個領域。
man
頁面中沒有任何內容,也沒有info
明確證實這一點,但是-f, --fields=LIST select only these fields; also print any line that contains no delimiter character, unless the -s option is specified
這表明第一個欄位在第一個分隔符之前(即使該分隔符實際上不存在)。
對我來說,我從來沒有懷疑它是這樣工作的,但這可能不是你需要的答案;-)。