2014-10-02 14 views
5

Có thể cut một chuỗi không có ngắt dòng không?ngăn dòng mới trong lệnh cắt

printf 'test.test' in test.test mà không có dòng mới.

Nhưng nếu tôi cắt đầu ra với printf 'test.test' | cut -d. -f1 có một dòng mới phía sau test.

+1

Như tôi thấy bạn nhận xét về một vấn đề chung chung hơn, bạn' d tốt hơn cập nhật các câu hỏi với những gì bạn chính xác muốn làm. – fedorqui

Trả lời

4

Tôi không biết điều đó. man cut là khá ngắn và không phản ánh bất cứ điều gì tương tự.

Thay vào đó, bạn có thể cung cấp các cut đầu ra để printf với một here-string, do đó vấn đề dòng mới phụ thuộc một lần nữa trên printf:

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

Nếu bạn không cần phải sử dụng cut, bạn có thể đạt được cùng một kết quả với awk:

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

Cảm ơn! Đầu tiên tôi đã có 'awk' NR == 3 {printf "Tín hiệu WiFi Strength =" $ 3 * 10/7} '/ proc/net/không dây | cắt -d -f1; printf "%% \ n" 'nhưng' cắt' đã tạo một dòng mới vì vậy tôi đã yêu cầu một giải pháp. Tuy nhiên nếu có một cách dễ dàng hơn để giải quyết nó với một lệnh awk, tôi sẽ thích nó! (ví dụ: 'awk' NR == 3 {print "Tín hiệu WiFi Strength =" $ 3 * 10/7 "%"} '/ proc/net/wireless' và cắt đầu ra của '$ 3 * 10/7' sau dấu chấm) – mamiu

+1

làm thế nào về: 'printf (" WiFi tín hiệu Strength =%. 0f %% ", $ 3 * 10/7)' (%% cuối cùng tương ứng với "%" trong mã awk của bạn). – isedev

+0

bạn thực sự nên chấp nhận câu trả lời của @ fedorqui - nó tương ứng với câu hỏi được đăng thực tế. Tôi đã đăng câu trả lời của mình như một giải pháp thay thế có thể cho mục đích giáo dục. – isedev

6

Có nhiều cách. Ngoài isedev và câu trả lời fedorqui, bạn cũng có thể làm:

  • 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

Rất toàn diện! +1 Có cần sử dụng '$ '\ n'' trên' tr -d' không? Với tôi, 'tr -d '\ n'' hoạt động tốt. – fedorqui

+1

@fedorqui huh, rõ ràng là không. Tôi nghĩ rằng tôi nhớ rằng nó từng là nhưng tôi có thể sai. Có lẽ nó phụ thuộc vào việc thực hiện 'tr'. Tôi đã làm nó theo cách này ra khỏi thói quen. – terdon

+0

'$' (đô la) trong 'tr -d $ '\ n'' có nghĩa là gì? –

Các vấn đề liên quan