Điểm:0

Làm cách nào để sao chép một phần nội dung (cụ thể là một số phần được biểu thị bằng dấu ngoặc vuông) từ tệp này sang tệp khác bằng tập lệnh shell?

lá cờ et

Tôi có một dự án .git/config tệp trong đó tôi có nội dung sau:

[người dùng]
    tên = <Họ Tên>
    thư điện tử = <EmailID>
    tên người dùng = <Tên người dùng>
[cốt lõi]
    biên tập viên = nvim
    khoảng trắng = fix,-indent-with-non-tab,trailing-space,cr-at-eol
    máy nhắn tin = delta
[web]
    trình duyệt = google-chrome
....
....
[bí danh]
    a = thêm --all
    ai = thêm -i
    #############
    áp dụng = áp dụng
    như = áp dụng --stat
    ac = áp dụng --kiểm tra
....
....
[bộ lọc "lfs"]
    sạch = git-lfs sạch -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    bắt buộc = đúng

Bây giờ tôi muốn sao chép nhiều phần và nội dung của chúng như [bí danh], [bộ lọc "lfs"] vv nhưng không phải là [người dùng][web] các phần từ tệp .gitconfig này sang tệp .gitconfig của dự án khác (nằm dưới cùng thư mục gốc với thư mục của dự án này).

Bây giờ tôi biết tôi có thể lặp lại và in các dòng của tệp này, nhưng không biết cách ghi nhiều phần vào một tệp khác (với càng ít mã lộn xộn càng tốt) sao cho nó không ghi đè lên nội dung gốc của tệp đích:

trong khi đọc dòng || [ -n "$line" ]; thực hiện tiếng vang $line; xong < $filename;

Trợ giúp được đánh giá cao ...

Điểm:2
lá cờ nl
P.P

Trong khi bạn có thể làm điều này thông qua bash/awk, tôi khuyên bạn nên sử dụng một tập tin INI trình phân tích cú pháp. Ví dụ: bạn có thể thực hiện các thao tác sau trong Python bằng cách sử dụng trình cấu hình thư viện:

nhập khẩu hệ thống
nhập trình cấu hình

def print_section(conf, phần):
    print("[{}]".format(phần))
    cho khóa trong conf[section]:
        print(" {} = {}".format(key, conf[section][key]))


c = configparser.RawConfigParser()
c.read('config.ini')

phần = ['bí danh', 'bộ lọc "lfs"']
cho s trong các phần:
    phần_in(c, s)

Oneliner giống nhau:

printf "nhập sys; nhập configparser; c = configparser.RawConfigParser(); c.read('config.ini'); các phần = ['bí danh', 'filter \"lfs\"'];\ncho s trong các phần: \n print(\"[{}]\".format(s));\n cho khóa trong c[s]:\n print(\" {} = {}\".format(key, c[s ][key]))" | trăn3
lá cờ et
Câu trả lời của bạn bằng Python là tốt, nhưng bạn cũng có thể chỉ định cách tôi có thể thực hiện việc này trong Awk/Sed không? Tôi thực sự muốn thêm nó vào tập lệnh Shell mà tôi đã tạo
P.P avatar
lá cờ nl
P.P
@VickyDev Thực sự không đáng để làm điều đó trong vỏ. Nếu bạn đang tìm cách tích hợp tập lệnh này vào một tập lệnh (hoặc chạy từ cmdline), bạn có thể chạy giống như một tập lệnh - đã cập nhật câu trả lời.
lá cờ et
Ok, nếu tôi ghi nó vào tệp bằng python như `with open(...)` và sau đó thêm `fwrite`, làm cách nào tôi có thể buộc dòng mới khi mỗi dòng tiếp theo (của phần, có nghĩa là tiêu đề phần rồi đến dòng mới và sau đó là dòng nội dung phần theo cấu trúc chính xác của dòng) đang được viết?
lá cờ et
Ngay bây giờ với `fwrite` cơ bản, nó đang viết 4 dấu cách thay vì dòng tiếp theo có thụt lề, làm cách nào để giải quyết vấn đề đó?
P.P avatar
lá cờ nl
P.P
@VickyDev Mã trong câu trả lời định dạng các phần. Đó không phải là công việc cho bạn?
lá cờ et
Về việc in ấn thì tốt, nhưng như tôi đã hỏi, tôi muốn nó được ghi/nối vào một tệp khác. Định dạng chỉ đặt văn bản nguyên trạng với dấu bằng nhưng nó không hoạt động khi viết bằng dòng mới và thụt đầu dòng trên mỗi dòng 4 khoảng trắng ban đầu
P.P avatar
lá cờ nl
P.P
@VickyDev Tôi không chắc mình hiểu câu hỏi của bạn. Nếu bạn muốn nối thêm vào một tệp khác, bạn có thể không chuyển hướng trực tuyến `... | python3 >> another_file` hoặc `... | python3 > another_file` để ghi đè?
lá cờ et
Ồ, xin lỗi, tôi chỉ nghĩ về f.write, nhưng vâng, nó cũng hoạt động, được chấp nhận.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.