2009-05-02 8 views
5

Tôi có 7 dòng văn bản:Rẽ một lệnh sed duy nhất vào một lệnh tái sử dụng Textmate

a 
b 
c 
d 
e 
f 
g 

Bây giờ tôi muốn thêm ký tự vào cuối của mỗi dòng, để kết thúc với:

a, 
b, 
c, 
d, 
e, 
f, 
g, 

tôi thấy rằng tôi có thể sử dụng "sed" lệnh và chạy lựa chọn của tôi qua sed sử dụng "Bộ lọc thông qua lệnh" trong Textmate

sed 's/$/,/' 

Không w, một câu hỏi vẫn còn: làm thế nào để tôi biến điều này thành một lệnh Textmate mà có đầu vào trong một số loại cách (vì vậy nó biết những gì văn bản để phụ thêm)?

(cố gắng của tôi trong việc này đã chứng minh không thành công)

Trả lời

3

Pop này vào một lệnh trong bó Text, nó sẽ nối thêm bất cứ thứ gì trong clipboard đến hết tất cả các dòng đã được chọn:

#!/bin/bash 
if [[ $(pbpaste|wc -l) -eq 0 ]] 
    then r=`pbpaste` 
    sed 's/$/'$r'/' 
    else sed 's/$/,/' 
fi 

Nó hiện giới hạn phụ thêm giá trị một dòng của văn bản, nếu khay nhớ tạm chứa nhiều dòng, nó sẽ mặc định là dấu phẩy ở cuối các dòng được chọn.

Edit:

Để thực hiện việc này một chút nữa, đây là một phiên bản cung cấp một hộp thoại nhắc nhở cho đầu vào của chuỗi đó sẽ được gắn vào mỗi dòng trong việc lựa chọn:

#!/bin/bash 
r=$(CocoaDialog inputbox --title "String to be appended to EOL" \ 
    --informative-text "Enter string:" \ 
    --button1 "Okay" --button2 "Cancel") 

[[ $(head -n1 <<<"$r") == "2" ]] && exit_discard 

r=$(tail -n1 <<<"$r") 

sed "s/$/$r/" 
2

Trong chữ đơn đã có một lệnh "Sửa mỗi dòng trong việc lựa chọn" chính xác làm điều này. Nó sẽ đặt con trỏ trên dòng đầu tiên và những gì bạn gõ có lặp lại trên mỗi dòng.

+0

Tôi biết; nhưng có vẻ như không thể thêm tiền. Nếu tôi đặt con trỏ ở đầu dòng, nhấn phím tắt, sau đó nó sẽ nhảy đến cuối. Tôi có thể sử dụng các lựa chọn cột nhưng sau đó tôi lại sử dụng chuột, điều này không đủ nhanh. – Wolfr

+2

lựa chọn cột không cần chuột. sử dụng page up + shift và nhấn tùy chọn khi hoàn tất. Tôi không biết về sed. nhưng trong văn bản bạn có thể viết lệnh bó rất dễ dàng để thay thế lựa chọn bằng văn bản được xử lý sed nếu bạn biết sed/ruby ​​/ regex + ruby, v.v. – nexneo

2

Tạo một lệnh mới trong trình soạn thảo bó

#!/bin/bash 
sed 's/$/,/' 

Trên thả xuống đầu vào chọn chọn văn bản hoặc Không có gì
Ngày đầu ra chọn Thay thế văn bản hiện

tôi chỉ thử nghiệm nó và nó hoạt động tốt.
Bạn cũng có thể chọn lối tắt bàn phím để làm cho nó hiệu quả hơn.

2

Nếu bạn sẵn sàng để tránh các tuyến đường lệnh và chỉ cần sử dụng Find/Replace thoại chỉ cần làm như sau:

  • nổi bật/chọn dòng bạn muốn nối để
  • mở Tìm thoại
  • kiểm tra 'Regular Expressions'
  • trong trường 'Tìm', thêm '$' (để báo hiệu kết thúc dòng)
  • trong 'Thay thế' lĩnh vực, thêm ',' (những gì bạn muốn nối)
  • giữ Option, điều này sẽ thay đổi "Replace All" để "Trong Selection"

Kỹ thuật này có thể được áp dụng trong một số cách hữu ích khác. Ví dụ: thay đổi '$' thành '^' nếu bạn muốn thêm tiền tố cho mỗi dòng.