2014-10-02 33 views
5

cut是否可以換行而不換行?阻止換行命令中的換行

printf 'test.test'打印test.test而不換行。

但是,如果我減少輸出printf 'test.test' | cut -d. -f1test後面有一個換行符。

+1

當我看到一個更通用的問題,你對此有何評論,你」更好地更新問題與你確切想要做的事情。 – fedorqui 2014-10-02 13:00:45

回答

4

沒有,我知道。 man cut很短,並不反映任何類似的東西。

相反,你可以提供cut輸出printfhere-string,使新生產線的問題上printf又取決於:

printf '%s' $(cut -d. -f1 <<< "test.test") 
2

如果你沒有使用cut,就可以實現結果與awk

printf 'test.test' | awk -F. '{printf($1)}' 
+0

謝謝!首先,我有'awk'NR == 3 {printf「WiFi信號強度=」$ 3 * 10/7}'/ proc/net/wireless |切-d。 -f1; printf「%% \ n」'但是'cut'做了一個換行符,所以我要求一個解決方案。不過,如果有一個更簡單的方法來用一個awk命令來解決它,我更喜歡它! (例如'awk'NR == 3 {打印「WiFi信號強度=」$ 3 * 10/7「%」}'/ proc/net/wireless「,並在點後減少$ 3 * 10/7的輸出) – mamiu 2014-10-02 12:58:16

+1

如何:'printf(「WiFi信號強度=%.0f %%」,$ 3 * 10/7)'(最後一個%%對應於awk代碼中的「%」)。 – isedev 2014-10-02 13:02:51

+0

你應該真的接受@ fedorqui的答案 - 它對應於實際發佈的問題。我只是將其答案作爲教育目的的替代方案。 – isedev 2014-10-02 13:06:52

6

有很多方法。除了isedev和fedorqui的答案,你也可以這樣做:

  • perl -ne '/^([^.]+)/ && print $1' <<< "test.test"
  • cut -d. -f1 <<< "test.test" | tr -d $'\n'
  • cut -d. -f1 <<< "test.test" | perl -pe 's/\n//'
  • while read -d. i; do printf "%s" "$i"; done <<< "test.test
+0

非常全面! +1是否需要在'tr -d'上使用'$'\ n''?對我而言,'tr -d'\ n''可以正常工作。 – fedorqui 2014-10-02 12:57:18

+1

@fedorqui呵,顯然不是。我想我記得它曾經是,但我可能是錯的。也許它取決於'tr'的實現。我這樣做是出於習慣。 – terdon 2014-10-02 12:59:01

+0

'tr -d $'\ n''中的'$'(美元)是什麼意思? – 2016-07-20 09:15:26