Nội dung filename
tệp của tôi như sau (ví dụ):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
Tôi muốn thay thế khối dòng giữa START
và END
chỉ bằng một từ duy nhất, ví dụ như với SINGLEWORD
. Giống như dưới đây:
My block of line starts from here
SINGLEWORD
and end to here for example.
Tôi có thể tìm thấy khối dòng của mình bằng cách sử dụng lệnh này:
grep -Pzo "START(.|\n)*END" filename
Và kết quả của việc chạy lệnh trên sẽ như thế này:
START
First line
second line
third line
END
Sau đó, tôi đã sử dụng lệnh này để kết hợp tất cả các dòng thành một dòng duy nhất:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
Sau đó tôi sẽ nhận được kết quả này:
START First line second line third line END
Và với lệnh cuối cùng của tôi, LAST_RESULTS | sed 's/.*/SINGLEWORD/'
tôi thay đổi chúng "SINGLEWORD"
và tôi nhận được kết quả này.
SINGLEWORD
Bây giờ điều tôi muốn là: Làm thế nào tôi có thể sử dụng lệnh này (Hoặc lệnh gợi ý của bạn) và thay thế (tại chỗ) khối dòng của tôi thành từ "SINGLEWORD"? Và kết quả cuối cùng sẽ giống như tập tin này:
My block of line starts from here
SINGLEWORD
and end to here for example.
sed
nên có thể nhưng có lẽ khó đọc hơn (Xem câu hỏi này )