- Tìm số 0 đầu tiên trong một mảng bit
- Unix Hiển thị thông tin về các tập tin khớp với một trong hai mẫu
- Biểu thức chính quy thay thế nhiều tệp
- Ẩn lệnh từ xtrace
Tôi cần thay thế tất cả các trường hợp của một biểu thức chính quy bằng một biểu thức chính quy khác trong nhiều tệp ở nhiều thư mục dưới một thư mục gốc.
Ví dụ: Cấu trúc tập tin:
.
|---nguồn
| |---Mô-đun
| | |---một số lớp.cpp
| |---main.cpp
|
|---bao gồm
|---Mô-đun
|---một số lớp.hpp
Về cơ bản thì nó như thế này, nhưng có nhiều tập tin và thư mục hơn.
Tôi cần tìm kiếm một biểu thức chính quy \(std::vector<.*>
và thay thế tất cả các trường hợp của nó bằng \(std::vector<.*> const&
Phần khó khăn dường như là phải đảm bảo <
Nội dung giữa >
Không thay đổi.
Ví dụ nó sẽ khớp (std::vector
và thay thế nó bằng (std::vector
Một ví dụ phức tạp hơn là:
cuộc thi đấu:(std::vector<>
Thay thế bằng:(std::vector<>
1 Câu trả lời
Nếu ký tự ">" cuối cùng trong ví dụ của bạn là ký tự ">" cuối cùng trên mỗi dòng, thì lệnh này sẽ hoạt động:
tìm root -name '*.cpp' -print0 |
xargs -0 sed -i 's/\((std::vector<.*>\)\([^>]*$\)/\1 const\&\2/'
Hãy thử sed trên một tệp duy nhất và không có -i trước, ví dụ:
$ tập tin mèo
(std::vector
(std::vector foo
(std::vector<>>
(std::vector<>> thanh
$ sed 's/\((std::vector<.*>\)\([^>]*$\)/\1 const\&\2/' tập tin
(std::vector const&
(std::vector const& foo
(std::vector<>> const&
(std::vector<>> const& bar
Nếu có thể thêm ">" sau ký tự cuối cùng trong ví dụ của bạn thì giải pháp không hề đơn giản, vui lòng đăng một số ví dụ đầu vào tiêu biểu và kết quả đầu ra dự kiến.
Ồ, kệ đi, đây là một kịch bản không hề tầm thường:
$ tập tin mèo
(std::vector
(std::vector foo
(std::vector có thêm > trong văn bản
(std::vector<>>
(std::vector<>> thanh
(std::vector<>> và đây là > một lần nữa
$ awk -v FS= -v str="(std::vector<" '
BẮT ĐẦU{ chiều dài=chuỗi(chuỗi) }
bắt đầu=chỉ số($0,chuỗi) {
cnt = 1
đối với (i = (bắt đầu + lgth); (i < = NF) && (cnt! = 0); i++) {
nếu ($i == "<") cnt++
nếu ($i == ">") cnt--
}
$0 = chuỗi con($0,1,i-1) "const&" chuỗi con($0,i)
}1' tập tin
(std::vector const&
(std::vector const& foo
(std::vector const& với extra > trong văn bản
(std::vector<>> const&
(std::vector<>> const& bar
(std::vector<>> const& và đây là > một lần nữa
Thực hiện trong vòng lặp while:
tìm gốc -tên '*.cpp' -in |
trong khi IFS= đọc -r tập tin; làm
awk -v FS= -v str="(std::vector<" '
BẮT ĐẦU{ chiều dài=chuỗi(chuỗi) }
bắt đầu=chỉ số($0,chuỗi) {
cnt = 1
đối với (i = (bắt đầu + lgth); (i < = NF) && (cnt! = 0); i++) {
nếu ($i == "<") cnt++
nếu ($i == ">") cnt--
}
$0 = chuỗi con($0,1,i-1) "const&" chuỗi con($0,i)
}1' "$file" > tmp &&
mv tmp "$file"
xong
Cách này sẽ không hiệu quả nếu tên tệp của bạn có ký tự xuống dòng, nhưng nếu có ký tự xuống dòng, bạn chỉ cần sửa chúng.
Liên quan đến việc thay thế biểu thức chính quy của nhiều tệp, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/15198494/
Hôm nay tôi đã thấy một số cách khác nhau để tải tệp trong ứng dụng Java. Sự khác biệt giữa ba phần mở đầu của URL: file:/ file:// file:/// là gì? Cách sử dụng chúng được ưa chuộng nhất là gì? Cảm ơn Stefan rất nhiều vì tệp trả lời hay nhất
Hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bằng sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy câu hỏi này có thể được cải thiện và có thể mở lại, hãy truy cập
Tôi có một tệp javascript và trong phương thức đó, tôi có một phương thức "kiểm tra" nơi tôi muốn gọi một hàm C#. Hàm c# không nằm trong cùng một tệp với tệp javascript. Nó nằm trong tệp .cs. Vậy làm sao tôi có thể quản lý j
Cần kiểm tra quyền của tệp/thư mục tôi đang sử dụng //filePath = đường dẫn của tệp/thư mục bị người dùng từ chối truy cập (trong windows) Tệp fil
Tôi có rất nhiều file java trong một thư mục mà tôi muốn sử dụng trong dự án Intellij của mình. Nhưng tôi không muốn sao chép các tập tin Java vào dự án của mình mỗi khi tôi bắt đầu một dự án mới. Tôi biết tôi có thể làm điều này trong Visual Studio và
Đã đóng. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại không chấp nhận câu trả lời. Câu hỏi này có vẻ không liên quan đến một vấn đề lập trình cụ thể, một phần mềm
Tôi có 3 tệp Twig cho các thành phần: Tệp 1: {# content-here #} Tệp 2: {{ title-here }} {# content-here #}
Tôi có các tệp mod_ldap.c và mod_authnz_ldap.c. Tôi cần sử dụng các tệp mod_ldap.so và mod_authnz_ldap.so cho các lệnh Linux. Câu trả lời hay nhất từ c
Tôi muốn sử dụng PIE để làm việc với IE7 trong dự án của mình. Nhưng điều tôi không hiểu là tôi chỉ có thể sử dụng tệp .htc trên máy chủ web phải không? Tôi có thể sử dụng nó trên trang cục bộ được tải qua trình duyệt mà không cần máy chủ web không? Tôi đã thấy trong tài liệu PIE
Tôi đang nghĩ đến điều này trong một quy trình CI, trước tiên tôi phải xây dựng và thử nghiệm ứng dụng của mình và kết quả sẽ là một hình ảnh docker. Tôi tự hỏi liệu việc sử dụng môi trường xây dựng để xây dựng trên máy chủ xây dựng rồi chạy thử nghiệm có phổ biến hơn không. Có thể sử dụng tập lệnh xây dựng cho việc này. Cuối cùng, chỉ cần j
sử dụng không gian tên std; struct WebSites { chuỗi siteName; int rank; chuỗi getSiteName() {
Tôi mới làm quen với Linux và hiện đang cố gắng sử dụng khả năng lập trình API của giao diện USB-CAN của ginkgo. Để lập trình API bằng C++, họ cung cấp các tệp thư viện bao gồm ba tệp .
Tôi vừa học ngôn ngữ C và gặp phải một vấn đề khi triển khai một chương trình sử dụng tệp test.txt làm đầu vào của chương trình. Nội dung của tệp test.txt là: 1 30 30 40 50 60 2 40 30 50 60 60 3 30 20
Làm thế nào để nối hai tệp tcpdump để mỗi lưu lượng xuất hiện lần lượt trong các tệp đó? Cụ thể hơn, tôi muốn "nhân" một tệp tcpdump để tất cả các phiên sẽ được lặp lại nhiều lần theo trình tự, lần này nối tiếp lần khác. Câu trả lời tốt nhất là mergeca
Tôi có một tệp tin có tên là input.MP4 và nó bị hỏng. Đó là hình ảnh từ camera giám sát. Tôi đã thử mọi cách, chuyển đổi ffmpeg, VLC, nhưng đều không được. Tuy nhiên, tôi đã sử dụng mediainfo và exiftool và trích xuất thông tin sau
Tôi muốn làm gì? Tôi muốn giải nén một tập tin ISO và chỉnh sửa các tập tin bên trong, sau đó đóng gói lại thành một tập tin ISO. (Như bạn đã đọc) Tại sao tôi phải làm điều này? Tôi muốn bắt đầu sửa đổi PSP ISO và để làm được điều này tôi phải sử dụng tài nguyên trò chơi, Tài sản
Với một tệp gzip Z, nếu tôi giải nén nó thành Z', có cách nào tôi có thể nén lại để khôi phục lại chính xác tệp gzip Z đó không? Sau khi đọc lướt qua định dạng DEFLATE, tôi đoán là không, vì bất kỳ tệp nào cũng có thể ở định dạng DEFLATE.
Tôi phải gửi một email có tệp đính kèm từ cơ sở dữ liệu đến ID email của tôi. EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Quản trị viên Adventure Works
Tôi có một tệp M4B lớn và một tệp CUE. Tôi muốn chia nó thành nhiều tệp M4B hoặc chia nó thành nhiều tệp MP3 (ưu tiên trước đây). Tôi muốn thực hiện điều này trong dòng lệnh (OS X, nhưng có thể sử dụng Linux nếu cần) và
Câu hỏi nhanh. Tôi có một dự án với một lớp không có tệp triển khai. Sau đó trong AppDelegate tôi có: #import "AppDelegate.h" #import "SomeClass.h" @interface A
Tôi là một lập trình viên xuất sắc, rất giỏi!