2014-10-02 18 views
5

È possibile impostare una stringa senza un'interruzione di riga su cut?Impedisci comando newline in cut

printf 'test.test' stampa il test.test senza una nuova riga.

Ma se taglio l'uscita con printf 'test.test' | cut -d. -f1 c'è una nuova riga dietro test.

+1

come la vedo io si commento su un problema più generico, è' È meglio aggiornare la domanda con ciò che vuoi esattamente fare. – fedorqui

risposta

4

No, lo so. man cut è piuttosto breve e non riflette nulla di simile.

Invece, è possibile fornire il cut uscita per printf con un here-string, in modo che il nuovo numero linea dipende ancora una volta printf:

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

Se non si dispone di utilizzare cut, è possibile ottenere la stesso risultato con awk:

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

Grazie! Per prima cosa ho avuto "awk" NR == 3 {printf "WiFi Signal Strength =" $ 3 * 10/7} "/ proc/net/wireless | tagliare -d. -f1; printf "%% \ n" 'ma il' cut' ha fatto una nuova riga quindi ho chiesto una soluzione. Tuttavia, se c'è un modo più semplice per risolverlo con un comando awk, lo preferirei! (es. 'awk 'NR == 3 {print" WiFi Signal Strength = "$ 3 * 10/7"% "}"/proc/net/wireless "e taglia l'output di' $ 3 * 10/7' dopo un punto) – mamiu

+1

: about printf ("WiFi Signal Strength =% .0f %%", $ 3 * 10/7) '(l'ultimo %% corrisponde a"% "nel tuo codice awk). – isedev

+0

dovresti davvero accettare la risposta di @ fedorqui - corrisponde alla domanda posta attualmente. Ho pubblicato la mia risposta come possibile alternativa solo a scopo didattico. – isedev

6

ci sono molti modi. Oltre a isedev e risposte di fedorqui, si potrebbe anche fare:

  • 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

Molto completo! +1 È necessario usare '$ '\ n'' su' tr -d'? Per me, 'tr -d '\ n'' funziona bene. – fedorqui

+1

@fedorqui huh, apparentemente no. Penso di ricordare che era, ma potrei sbagliarmi. Forse dipende dall'implementazione 'tr'. L'ho fatto in questo modo per abitudine. – terdon

+0

Cosa significa '$' (dollaro) in 'tr -d $ '\ n''? –