Nối bàn điều khiển ra để bắt đầu [bắt đầu]


-2

Câu hỏi này đã có câu trả lời ở đây:

Để hậu sinh giả-mô-đun-bpy (Đối với máy xay sinh tố Python) ... tuy nhiên, ngôn ngữ không thành vấn đề. Vì vậy, tôi sử dụng lệnh console tiếp theo

]$ ls  | grep -v _init_ | sed -E 's/^([a-zA-Z0-1]+)/import \1/' >> __init__.py

Nó sẽ ghi tất cả các tệp python vào __init__.py dưới dạng nhập (Loại trừ chính nó __init__.py)

Tôi có thể viết / nối không phải là kết thúc, mà là phần đầu của tệp không?



2
Hai câu hỏi rất khác biệt, chúng nên được đăng riêng. Ngoại trừ cái thứ hai đã ở đây . Cũng lưu ý một câu trả lời cho "tôi có thể đào?" thường là "có" hoặc "không"; "làm thế nào tôi có thể…?" sẽ làm cho một câu hỏi tốt hơn.
Kamil Maciorowski 17/07/18

-1. Phản hồi: mặc dù nhận xét của tôi, bạn để hai câu hỏi được. Bây giờ có hai câu trả lời, mỗi câu trả lời một câu hỏi khác nhau. Đây không phải là cách trang web có nghĩa là để làm việc.
Kamil Maciorowski

Bây giờ nó là một bản sao của Làm cách nào để thêm văn bản vào đầu tệp trong Bash? Thêm vào đó bạn đã đưa ra một trong những câu trả lời ngoài chủ đề, nhưng điều này là không thể tránh khỏi, trừ khi bạn để lại hai câu hỏi riêng biệt, có nhược điểm rõ ràng. Vấn đề là từ một thời điểm nào đó không có cách nào thoát khỏi mớ hỗn độn này mà không có bất kỳ sự hy sinh nào. :(
Kamil Maciorowski

Câu trả lời:


1

Tất cả mọi thứ grepcó thể được thực hiện trong sed: xem hướng dẫn này . Trong trường hợp này, bạn thêm -e '/PATTERN/d'để tái tạo grep -vtùy chọn:

ls | sed -E -e '/_init_/d' -e 's/^([a-zA-Z0-1]+)/import \1/' >> __init__.py

Bạn có thể loại bỏ lsbằng cách sử dụng thay thế:

for f in *; do echo "$f"; done | sed -E -e '/_init_/s' -e 's/^([a-zA-Z0-1]+)/import \1/' >> __init__.py

Điều này loại bỏ nhu cầu sử dụng một chương trình bên ngoài và xử lý bất kỳ thông tin hoặc cờ bổ sung nào có thể được thêm bằng lsmặc định.

Có một số cách để thêm các tệp theo thứ tự ngược lại:

  • Nếu bạn sử dụng ls, sau đó ls -rsẽ xuất các tập tin theo thứ tự ngược lại.
  • Nếu bạn sử dụng for f in *; ..., sau đó dẫn đầu ra thông qua sort -r.
  • Bạn có thể sử dụng tacđể đảo ngược thứ tự dòng trong đầu ra sau đó.
  • Cách dài dòng là xuất từng tệp thành một tệp đơn, nối thêm danh sách đầu ra hiện tại vào tệp đó, sau đó di chuyển tệp này để ghi đè lên danh sách đầu ra đang chạy.

Lưu ý: OP thu hẹp câu hỏi và chuyển câu trả lời của bạn ra khỏi chủ đề.
Kamil Maciorowski

@KamilMaciorowski - Dù sao, một nửa câu trả lời, nhưng loại bỏ greplà một phần hợp lý của câu trả lời cho câu hỏi như bây giờ, mặc dù nó có thể không phải là điều đầu tiên để nói. Tôi đã xem xét nhận xét của bạn về việc tránh ls. Tôi cũng thấy câu hỏi là một vấn đề XY, và cố gắng trả lời những gì tôi nghĩ là câu hỏi thực sự.
AFH

Đúng là tôi chỉ muốn cho bạn biết những điều có phần phức tạp.
Kamil Maciorowski

1

Điều này trả lời câu hỏi thứ hai của bạn.

Đây là một mẹo nhỏ để viết nội dung khi bắt đầu tập tin với sed:

sed -i '1s/^/to start of file\n/' existing_file.txt

Có lẽ với một chút sửa đổi nó là điều phù hợp với bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.