2014-10-02 2 views
5

Возможно ли до cut строка без прерывания строки?предотвратить появление новой строки в команде cut

printf 'test.test' печатает test.test без новой строки.

Но если я вырезаю выход с printf 'test.test' | cut -d. -f1, есть новая строка за test.

+1

Как я вижу, вы прокомментируете о более общей проблемы, вы» d лучше уточнить вопрос с тем, что вы точно хотите сделать. – fedorqui

ответ

4

Нет, что я знаю. man cut довольно короткий и не отражает ничего подобного.

Вместо этого, вы можете обеспечить cut вывод printf с here-string, так что новый выпуск линии снова зависит от printf:

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

Если вы не должны использовать cut, вы можете достичь Такой же результат с awk:

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

Спасибо! Сначала у меня была 'awk 'NR == 3 {printf" Сила сигнала Wi-Fi = "$ 3 * 10/7}'/proc/net/wireless | cut -d. -f1; printf "%% \ n", но 'cut' сделал новую строку, поэтому я попросил решение. Тем не менее, если есть более простой способ решить это с помощью одной команды awk, я бы предпочел! (например, 'awk 'NR == 3 {print" Сила сигнала WiFi = "$ 3 * 10/7"% "}'/proc/net/wireless' и вырезать вывод' $ 3 * 10/7' после точки) – mamiu

+1

как о: 'printf (« Сила сигнала WiFi =% .0f %% », $ 3 * 10/7)' (последний %% соответствует «%» в вашем awk-коде). – isedev

+0

вы действительно должны принять ответ @ fedorqui - он соответствует актуальному вопросу. Я отправил свой ответ в качестве альтернативы только для образовательных целей. – isedev

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 Нужно ли использовать '$ '\ n'' на' tr -d'? Для меня «tr -d» \ n'' отлично работает. – fedorqui

+1

@fedorqui huh, по-видимому, нет. Кажется, я помню, что это было, но я могу ошибаться. Возможно, это зависит от реализации 'tr'. Я сделал это по привычке. – terdon

+0

Что означает '$' (доллар) в 'tr -d $ '\ n''? –

Смежные вопросы