2014-10-02 17 views
5

Czy jest możliwe cut ciąg bez podziału wiersza?zapobiega nowej linii w komendzie cięcia

printf 'test.test' drukuje test.test bez nowej linii.

Ale jeśli zmniejszę wydajność o printf 'test.test' | cut -d. -f1, istnieje nowa linia za test.

+1

Jak widzę, że komentarz na temat bardziej ogólny problem, ty” lepiej zaktualizuj pytanie, co dokładnie chcesz zrobić. – fedorqui

Odpowiedz

4

Nie, wiem. man cut jest dość krótki i nie odzwierciedla niczego podobnego.

Zamiast tego można zapewnić wyjście cut do printf z here-string, tak, że nowa linia problem znowu zależy na printf:

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

Jeśli nie trzeba używać cut można osiągnąć ten sam wynik z awk:

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

Dzięki! Najpierw miałem 'awk 'NR == 3 {printf" Moc sygnału WiFi = "$ 3 * 10/7}'/proc/net/wireless | wyciąć -d. -f1; printf "%% \ n" 'ale' cut' zrobił znak nowej linii, więc poprosiłem o rozwiązanie. Niemniej jednak, jeśli jest łatwiejszy sposób rozwiązania go za pomocą jednego polecenia awk, wolałbym to! (np. 'awk 'NR == 3 {print" Moc sygnału WiFi = "3 $ * 10/7"% "}'/proc/net/wireless' i odetnij wyjście '$ 3 * 10/7' po kropce) – mamiu

+1

co powiesz na: 'printf (" Moc sygnału WiFi =% .0f %% ", 3 $ * 10/7)' (ostatnie %% odpowiada "%" w twoim kodzie awk). – isedev

+0

powinieneś naprawdę przyjąć odpowiedź @ fedorqui - odpowiada ona faktycznemu wysłanemu pytaniu. Wysłałem swoją odpowiedź jako możliwą alternatywę wyłącznie do celów edukacyjnych. – isedev

6

Istnieje wiele sposobów. Oprócz isedev i odpowiedzi fedorqui męska, można również zrobić:

  • 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

Bardzo wszechstronny! +1 Czy konieczne jest użycie '$ '\ n'' na' tr -d'? Dla mnie 'tr -d '\ n'' działa dobrze. – fedorqui

+1

@fedorqui huh, najwyraźniej nie. Myślę, że pamiętam, że kiedyś było, ale mogę się mylić. Być może zależy to od implementacji 'tr'. Zrobiłem to w ten sposób z przyzwyczajenia. – terdon

+0

Co oznacza '$' (dolar) w 'tr -d $ '\ n''? –