Cách sử dụng lệnh sed trên Linux
Nghe có vẻ điên rồ, nhưng Linux quyến rũ
lệnh là một trình soạn thảo văn bản không có giao diện. Bạn có thể sử dụng nó từ dòng lệnh để thao tác văn bản trong tệp và luồng. Chúng tôi sẽ chỉ cho bạn cách khai thác sức mạnh của nó.
Sức mạnh của sed
Các quyến rũ
Lệnh hơi giống cờ vua: mất một giờ để học những điều cơ bản và cả đời để thành thạo chúng (hoặc, ít nhất là thực hành rất nhiều). Chúng tôi sẽ hiển thị cho bạn lựa chọn các gambit mở trong từng danh mục chính của quyến rũ
chức năng.
quyến rũ
là một trình chỉnh sửa luồng hoạt động trên đầu vào theo đường ống hoặc các tệp văn bản. Tuy nhiên, nó không có giao diện soạn thảo văn bản tương tác. Thay vào đó, bạn cung cấp hướng dẫn để nó làm theo khi nó hoạt động thông qua văn bản. Tất cả điều này đều hoạt động trong Bash và các trình bao dòng lệnh khác.
Với quyến rũ
bạn có thể làm tất cả những điều sau:
- Chọn văn bản
- Văn bản thay thế
- Thêm dòng vào văn bản
- Xóa các dòng khỏi văn bản
- Sửa đổi (hoặc bảo tồn) tệp gốc
Chúng tôi đã cấu trúc các ví dụ của mình để giới thiệu và chứng minh các khái niệm, không phải để tạo ra các ví dụ ngắn nhất (và ít tiếp cận nhất) quyến rũ
các lệnh. Tuy nhiên, các chức năng đối sánh mẫu và chọn văn bản của quyến rũ
dựa nhiều vào biểu thức chính quy (regexes). Bạn sẽ cần làm quen với những điều này để tận dụng tốt nhất quyến rũ
.
LIÊN QUAN:Cách sử dụng Biểu thức chính quy (regexes) trên Linux
Một ví dụ đơn giản
Đầu tiên, chúng tôi sẽ sử dụng tiếng vọng lại
để gửi một số văn bản đến quyến rũ
thông qua một đường ống, và có quyến rũ
thay thế một phần của văn bản. Để làm như vậy, chúng tôi nhập như sau:
echo howtogonk | sed 's / gonk / geek /'
Các tiếng vọng lại
lệnh gửi “howtogonk” vào quyến rũ
và quy tắc thay thế đơn giản của chúng tôi (“s” là viết tắt của sự thay thế) được áp dụng.quyến rũ
tìm kiếm văn bản đầu vào cho sự xuất hiện của chuỗi đầu tiên và sẽ thay thế bất kỳ kết quả phù hợp nào bằng chuỗi thứ hai.
Chuỗi “gonk” được thay thế bằng “geek” và chuỗi mới được in trong cửa sổ đầu cuối.
Thay thế có lẽ là cách sử dụng phổ biến nhất của quyến rũ
. Tuy nhiên, trước khi có thể đi sâu hơn vào các thay thế, chúng ta cần biết cách chọn và khớp văn bản.
Chọn văn bản
Chúng tôi sẽ cần một tệp văn bản cho các ví dụ của chúng tôi. Chúng tôi sẽ sử dụng một bài có chứa tuyển tập các câu từ bài thơ sử thi "The Rime of the Ancient Mariner" của Samuel Taylor Coleridge.
Chúng tôi nhập phần sau để xem nó với ít hơn
:
ít coleridge.txt
Để chọn một số dòng từ tệp, chúng tôi cung cấp dòng bắt đầu và dòng kết thúc của phạm vi chúng tôi muốn chọn. Một số duy nhất chọn một dòng đó.
Để trích xuất các dòng từ một đến bốn, chúng ta gõ lệnh sau:
sed -n '1,4p' coleridge.txt
Lưu ý dấu phẩy giữa 1
và 4
. Các p
có nghĩa là "in các dòng phù hợp." Theo mặc định,quyến rũ
in tất cả các dòng. Chúng tôi sẽ thấy tất cả văn bản trong tệp với các dòng phù hợp được in hai lần. Để ngăn chặn điều này, chúng tôi sẽ sử dụng -n
(yên tĩnh) tùy chọn để loại bỏ văn bản chưa khớp.
Chúng tôi thay đổi số dòng để chúng tôi có thể chọn một câu thơ khác, như được hiển thị bên dưới:
sed -n '6,9p' coleridge.txt
Chúng ta có thể sử dụng -e
(biểu thức) tùy chọn để thực hiện nhiều lựa chọn. Với hai biểu thức, chúng ta có thể chọn hai câu thơ, như sau:
sed -n -e '1,4p' -e '31, 34p' coleridge.txt
Nếu chúng ta giảm số đầu tiên trong biểu thức thứ hai, chúng ta có thể chèn một khoảng trống giữa hai câu thơ. Chúng tôi gõ như sau:
sed -n -e '1,4p' -e '30, 34p' coleridge.txt
Chúng tôi cũng có thể chọn một dòng bắt đầu và nói quyến rũ
để xem qua tệp và in các dòng thay thế, mỗi dòng thứ năm, hoặc bỏ qua bất kỳ số dòng nào. Lệnh tương tự như chúng ta đã sử dụng ở trên để chọn một dải ô. Tuy nhiên, lần này, chúng tôi sẽ sử dụng dấu ngã (~
) thay vì dấu phẩy để phân cách các số.
Số đầu tiên cho biết vạch bắt đầu. Con số thứ hai cho biết quyến rũ
những dòng nào sau dòng bắt đầu mà chúng tôi muốn xem. Số 2 có nghĩa là mọi dòng thứ hai, 3 có nghĩa là mọi dòng thứ ba, v.v.
Chúng tôi gõ như sau:
sed -n '1 ~ 2p' coleridge.txt
Không phải lúc nào bạn cũng biết văn bản mình đang tìm kiếm nằm ở đâu trong tệp, điều đó có nghĩa là số dòng không phải lúc nào cũng hữu ích. Tuy nhiên, bạn cũng có thể sử dụng quyến rũ
để chọn các dòng có chứa các mẫu văn bản phù hợp. Ví dụ: hãy trích xuất tất cả các dòng bắt đầu bằng “Và”.
Dấu mũ (^
) đại diện cho đầu dòng. Chúng tôi sẽ đính kèm cụm từ tìm kiếm của mình trong dấu gạch chéo phía trước (/
). Chúng tôi cũng bao gồm một khoảng trắng sau “Và” nên những từ như “Android” sẽ không được đưa vào kết quả.
đọc hiểu quyến rũ
tập lệnh có thể hơi khó khăn lúc đầu. Các / p
có nghĩa là "in", giống như nó đã làm trong các lệnh mà chúng tôi đã sử dụng ở trên. Tuy nhiên, trong lệnh sau, dấu gạch chéo lên trước nó:
sed -n '/ ^ Và / p' coleridge.txt
Ba dòng bắt đầu bằng “Và” được trích xuất từ tệp và hiển thị cho chúng tôi.
Thay thế
Trong ví dụ đầu tiên của chúng tôi, chúng tôi đã chỉ cho bạn định dạng cơ bản sau cho quyến rũ
thay thế:
echo howtogonk | sed 's / gonk / geek /'
Các S
nói với quyến rũ
đây là một sự thay thế. Chuỗi đầu tiên là mẫu tìm kiếm và chuỗi thứ hai là văn bản mà chúng tôi muốn thay thế văn bản phù hợp đó. Tất nhiên, như với tất cả mọi thứ trên Linux, điều ác là ở chi tiết.
Chúng tôi nhập nội dung sau để thay đổi tất cả các lần xuất hiện của “ngày” thành “tuần” và cho phép thủy thủ và chim hải âu thêm thời gian để gắn kết:
sed -n 's / ngày / tuần / p' coleridge.txt
Trong dòng đầu tiên, chỉ lần xuất hiện thứ hai của “ngày” được thay đổi. Điều này là bởi vì quyến rũ
dừng sau trận đấu đầu tiên trên mỗi dòng. Chúng tôi phải thêm “g” vào cuối biểu thức, như được hiển thị bên dưới, để thực hiện tìm kiếm toàn cục để tất cả các kết quả phù hợp trong mỗi dòng được xử lý:
sed -n 's / ngày / tuần / gp' coleridge.txt
Điều này phù hợp với ba trong số bốn ở dòng đầu tiên. Vì từ đầu tiên là "Ngày" và quyến rũ
phân biệt chữ hoa chữ thường, nó không coi trường hợp đó giống với “ngày”.
Chúng tôi gõ như sau, thêm một Tôi
vào lệnh ở cuối biểu thức để biểu thị phân biệt chữ hoa chữ thường:
sed -n 's / ngày / tuần / gip' coleridge.txt
Điều này hoạt động, nhưng bạn có thể không phải lúc nào cũng muốn phân biệt chữ hoa chữ thường cho mọi thứ. Trong những trường hợp đó, bạn có thể sử dụng nhóm regex để thêm phân biệt chữ hoa chữ thường theo mẫu cụ thể.
Ví dụ: nếu chúng ta đặt các ký tự trong dấu ngoặc vuông ([]
), chúng được hiểu là “bất kỳ ký tự nào trong danh sách các ký tự này”.
Chúng tôi nhập nội dung sau và bao gồm “D” và “d” trong nhóm, để đảm bảo nó khớp với cả “Day” và “day”:
sed -n 's / [Dd] ay / tuần / gp' coleridge.txt
Chúng tôi cũng có thể hạn chế thay thế cho các phần của tệp. Giả sử tệp của chúng tôi chứa khoảng cách kỳ lạ trong câu đầu tiên. Chúng ta có thể sử dụng lệnh quen thuộc sau để xem câu đầu tiên:
sed -n '1,4p' coleridge.txt
Chúng tôi sẽ tìm kiếm hai khoảng trắng và thay thế chúng bằng một. Chúng tôi sẽ thực hiện việc này trên toàn cầu để hành động được lặp lại trên toàn bộ quy trình. Nói rõ hơn, mẫu tìm kiếm là dấu cách, dấu cách (*
), và chuỗi thay thế là một khoảng trắng. Các 1,4
hạn chế thay thế cho bốn dòng đầu tiên của tệp.
Chúng tôi đặt tất cả những điều đó lại với nhau trong lệnh sau:
sed -n '1,4 s / * / / gp' coleridge.txt
Điều này hoạt động tốt! Mẫu tìm kiếm là điều quan trọng ở đây. Dấu hoa thị (*
) đại diện cho không hoặc nhiều ký tự đứng trước, là khoảng trắng. Do đó, mẫu tìm kiếm đang tìm kiếm các chuỗi có một hoặc nhiều khoảng trắng.
Nếu chúng tôi thay thế một khoảng trắng cho bất kỳ chuỗi nhiều khoảng trắng nào, chúng tôi sẽ trả tệp về khoảng cách thông thường, với một khoảng trắng duy nhất giữa mỗi từ. Điều này cũng sẽ thay thế một khoảng trắng cho một khoảng trắng trong một số trường hợp, nhưng điều này sẽ không ảnh hưởng xấu đến bất kỳ điều gì — chúng tôi sẽ vẫn nhận được kết quả mong muốn của mình.
Nếu chúng tôi nhập nội dung sau và giảm mẫu tìm kiếm thành một khoảng trắng, bạn sẽ thấy ngay lý do tại sao chúng tôi phải bao gồm hai khoảng trắng:
sed -n '1,4 s / * / / gp' coleridge.txt
Vì dấu hoa thị khớp với không hoặc nhiều ký tự đứng trước, nên nó coi mỗi ký tự không phải là khoảng trắng là “không gian” và áp dụng thay thế cho ký tự đó.
Tuy nhiên, nếu chúng tôi bao gồm hai khoảng trắng trong mẫu tìm kiếm,quyến rũ
phải tìm ít nhất một ký tự khoảng trắng trước khi áp dụng thay thế. Điều này đảm bảo các ký tự nonspace sẽ không bị ảnh hưởng.
Chúng tôi gõ như sau, sử dụng -e
(biểu thức) chúng tôi đã sử dụng trước đó, cho phép chúng tôi thực hiện hai hoặc nhiều thay thế đồng thời:
sed -n -e 's / motion / flashing / gip' -e 's / ocean / gutter / gip' coleridge.txt
Chúng ta có thể đạt được kết quả tương tự nếu sử dụng dấu chấm phẩy (;
) để tách hai biểu thức, như sau:
sed -n 's / chuyển động / rung lắc / gip; s / đại dương / gutter / gip' coleridge.txt
Khi chúng ta hoán đổi “ngày” cho “tuần” trong lệnh sau, ví dụ của “ngày” trong biểu thức “well a-day” cũng được hoán đổi:
sed -n 's / [Dd] ay / tuần / gp' coleridge.txt
Để ngăn chặn điều này, chúng tôi chỉ có thể thử thay thế trên các đường phù hợp với mẫu khác. Nếu chúng tôi sửa đổi lệnh để có một mẫu tìm kiếm khi bắt đầu, chúng tôi sẽ chỉ xem xét hoạt động trên các dòng phù hợp với mẫu đó.
Chúng tôi gõ như sau để làm cho mẫu đối sánh của chúng tôi có từ “sau”:
sed -n '/ sau / s / [Dd] ay / tuần / gp' coleridge.txt
Điều đó mang lại cho chúng tôi phản ứng mà chúng tôi muốn.
Thay thế phức tạp hơn
Hãy để Coleridge nghỉ ngơi và sử dụng quyến rũ
để trích xuất tên từ etc / passwd
tập tin.
Có những cách ngắn hơn để thực hiện điều này (sẽ nói thêm về điều này sau), nhưng chúng tôi sẽ sử dụng cách dài hơn ở đây để chứng minh một khái niệm khác. Mỗi mục phù hợp trong một mẫu tìm kiếm (được gọi là biểu thức con) có thể được đánh số (tối đa là chín mục). Sau đó, bạn có thể sử dụng những con số này trongquyến rũ
các lệnh để tham chiếu các biểu thức con cụ thể.
Bạn phải đặt biểu thức con trong dấu ngoặc đơn [()
] để điều này hoạt động. Các dấu ngoặc đơn cũng phải được đặt trước bởi một dấu gạch chéo ngược (\
) để ngăn họ bị đối xử như một nhân vật bình thường.
Để làm điều này, bạn sẽ nhập như sau:
sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd
Hãy phân tích điều này:
sed 's /
: Cácquyến rũ
lệnh và phần đầu của biểu thức thay thế.\(
: Dấu ngoặc đơn mở đầu [(
] bao quanh biểu thức con, trước dấu gạch chéo ngược (\
).[^:]*
: Biểu thức con đầu tiên của cụm từ tìm kiếm chứa một nhóm trong dấu ngoặc vuông. Dấu mũ (^
) có nghĩa là "không" khi được sử dụng trong một nhóm. Nhóm có nghĩa là bất kỳ ký tự nào không phải là dấu hai chấm (:
) sẽ được chấp nhận như một trận đấu.\)
: Dấu ngoặc đóng [)
] với một dấu gạch chéo ngược trước (\
)..*
: Biểu thức phụ tìm kiếm thứ hai này có nghĩa là “bất kỳ ký tự nào và bất kỳ số nào trong số đó”./\1
: Phần thay thế của biểu thức chứa1
trước dấu gạch chéo ngược (\
). Điều này đại diện cho văn bản phù hợp với biểu thức con đầu tiên./'
: Dấu gạch chéo đóng phía trước (/
) và một câu trích dẫn ('
) chấm dứtquyến rũ
chỉ huy.
Điều này hoàn toàn có nghĩa là chúng ta sẽ tìm kiếm bất kỳ chuỗi ký tự nào không chứa dấu hai chấm (:
), sẽ là trường hợp đầu tiên của văn bản khớp. Sau đó, chúng tôi đang tìm kiếm bất kỳ thứ gì khác trên dòng đó, đây sẽ là trường hợp thứ hai của văn bản phù hợp. Chúng tôi sẽ thay thế toàn bộ dòng bằng văn bản phù hợp với biểu thức con đầu tiên.
Mỗi dòng trong / etc / passwd
tệp bắt đầu bằng tên người dùng có dấu hai chấm. Chúng tôi so khớp mọi thứ với dấu hai chấm đầu tiên, và sau đó thay thế giá trị đó cho toàn bộ dòng. Vì vậy, chúng tôi đã tách biệt tên người dùng.
Tiếp theo, chúng tôi sẽ đặt biểu thức con thứ hai trong dấu ngoặc đơn [()
] để chúng tôi cũng có thể tham chiếu nó theo số. Chúng tôi cũng sẽ thay thế \1
với \2
. Lệnh của chúng ta bây giờ sẽ thay thế toàn bộ dòng bằng mọi thứ từ dấu hai chấm đầu tiên (:
) đến cuối dòng.
Chúng tôi gõ như sau:
sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd
Những thay đổi nhỏ đó đảo ngược ý nghĩa của lệnh và chúng tôi nhận được mọi thứ ngoại trừ tên người dùng.
Bây giờ, hãy cùng xem cách nhanh chóng và dễ dàng để thực hiện việc này.
Cụm từ tìm kiếm của chúng tôi là từ dấu hai chấm đầu tiên (:
) đến cuối dòng. Bởi vì biểu thức thay thế của chúng ta trống (//
), chúng tôi sẽ không thay thế văn bản phù hợp bằng bất kỳ thứ gì.
Vì vậy, chúng tôi gõ như sau, cắt bỏ mọi thứ từ dấu hai chấm đầu tiên (:
) đến cuối dòng, chỉ để lại tên người dùng:
sed 's /:.*// "/ etc / passwd
Hãy xem một ví dụ trong đó chúng tôi tham chiếu các kết quả khớp thứ nhất và thứ hai trong cùng một lệnh.
Chúng tôi đã có một tệp dấu phẩy (,
) ngăn cách họ và tên. Chúng tôi muốn liệt kê chúng dưới dạng “họ, tên”. Chúng ta có thể sử dụngcon mèo
, như được hiển thị bên dưới, để xem những gì có trong tệp:
cat geeks.txt
Thích rất nhiều quyến rũ
, lệnh tiếp theo này thoạt đầu có thể không xuyên qua được:
sed 's / ^ \ (. * \), \ (. * \) $ / \ 2, \ 1 / g' geeks.txt
Đây là lệnh thay thế giống như các lệnh khác mà chúng tôi đã sử dụng và mẫu tìm kiếm khá dễ dàng. Chúng tôi sẽ chia nhỏ nó dưới đây:
sed 's /
: Lệnh thay thế thông thường.^
: Bởi vì dấu mũ không nằm trong một nhóm ([]
), nó có nghĩa là "Đầu dòng."\(.*\),
: Biểu thức con đầu tiên là bất kỳ số ký tự nào. Nó được đặt trong dấu ngoặc đơn [()
], mỗi trong số đó được đặt trước bởi một dấu gạch chéo ngược (\
) để chúng tôi có thể tham chiếu nó bằng số. Toàn bộ mẫu tìm kiếm của chúng tôi cho đến nay được dịch là tìm kiếm từ đầu dòng cho đến dấu phẩy đầu tiên (,
) cho bất kỳ số ký tự nào.\(.*\)
: Biểu thức con tiếp theo là (một lần nữa) bất kỳ số ký tự nào. Nó cũng được đặt trong dấu ngoặc đơn [()
], cả hai đều đứng trước dấu gạch chéo ngược (\
) để chúng tôi có thể tham chiếu văn bản phù hợp theo số.$/
: Kí hiệu đô la ($
) đại diện cho phần cuối của dòng và sẽ cho phép tìm kiếm của chúng tôi tiếp tục đến cuối dòng. Chúng tôi đã sử dụng điều này đơn giản để giới thiệu ký hiệu đô la. Chúng tôi không thực sự cần nó ở đây, vì dấu hoa thị (*
) sẽ đi đến cuối dòng trong trường hợp này. Dấu gạch chéo về phía trước (/
) hoàn thành phần mẫu tìm kiếm.\ 2, \ 1 / g '
: Bởi vì chúng tôi đặt hai biểu thức con của chúng tôi trong dấu ngoặc đơn, chúng tôi có thể tham khảo cả hai biểu thức phụ bằng số của chúng. Bởi vì chúng tôi muốn đảo ngược thứ tự, chúng tôi nhập chúng làtrận thứ hai, trận đầu tiên
. Các số phải được đặt trước dấu gạch chéo ngược (\
)./ g
: Điều này cho phép lệnh của chúng tôi hoạt động toàn cầu trên mỗi dòng.geeks.txt
: Tệp chúng tôi đang làm việc.
Bạn cũng có thể sử dụng lệnh Cắt (c
) để thay thế toàn bộ các dòng phù hợp với mẫu tìm kiếm của bạn. Chúng tôi nhập nội dung sau để tìm kiếm một dòng có từ “cổ” trong đó và thay thế nó bằng một chuỗi văn bản mới:
sed '/ cổ / c Xung quanh cổ tay tôi bị xâu' coleridge.txt
Dòng mới của chúng tôi hiện xuất hiện ở cuối phần trích xuất của chúng tôi.
Chèn dòng và văn bản
Chúng tôi cũng có thể chèn các dòng và văn bản mới vào tệp của mình. Để chèn các dòng mới sau bất kỳ dòng nào phù hợp, chúng tôi sẽ sử dụng lệnh Nối (a
).
Đây là tệp chúng tôi sẽ làm việc với:
cat geeks.txt
Chúng tôi đã đánh số các dòng để làm cho điều này dễ dàng hơn một chút.
Chúng tôi nhập nội dung sau để tìm kiếm các dòng có chứa từ “Anh ấy” và chèn một dòng mới bên dưới chúng:
sed '/ He / a -> Đã chèn!' geeks.txt
Chúng tôi gõ như sau và bao gồm Lệnh Chèn (Tôi
) để chèn dòng mới bên trên những dòng có chứa văn bản phù hợp:
sed '/ He / i -> Đã chèn!' geeks.txt
Chúng ta có thể sử dụng dấu và (&
), đại diện cho văn bản phù hợp ban đầu, để thêm văn bản mới vào một dòng phù hợp. \1
, \2
, v.v., đại diện cho các biểu thức phụ phù hợp.
Để thêm văn bản vào đầu dòng, chúng tôi sẽ sử dụng lệnh thay thế khớp với mọi thứ trên dòng, kết hợp với mệnh đề thay thế kết hợp văn bản mới của chúng tôi với dòng gốc.
Để thực hiện tất cả những điều này, chúng tôi nhập như sau:
sed 's /.*/--> Đã chèn & /' geeks.txt
Chúng tôi nhập nội dung sau, bao gồm G
lệnh này sẽ thêm một dòng trống giữa mỗi dòng:
sed 'G' geeks.txt
Nếu bạn muốn thêm hai hoặc nhiều dòng trống, bạn có thể sử dụng G; G
, G; G; G
, và như thế.
Xóa dòng
Lệnh Xóa (d
) xóa các dòng phù hợp với mẫu tìm kiếm hoặc những dòng được chỉ định với số dòng hoặc phạm vi.
Ví dụ, để xóa dòng thứ ba, chúng tôi sẽ nhập như sau:
sed '3d' geeks.txt
Để xóa phạm vi các dòng từ bốn đến năm, chúng tôi sẽ nhập như sau:
sed '4,5d' geeks.txt
Để xóa các dòng bên ngoài một phạm vi, chúng tôi sử dụng dấu chấm than (!
), như hình dưới đây:
sed '6,7! d' geeks.txt
Lưu các thay đổi của bạn
Cho đến nay, tất cả kết quả của chúng tôi đã được in ra cửa sổ đầu cuối, nhưng chúng tôi vẫn chưa lưu chúng ở đâu. Để thực hiện các thay đổi này vĩnh viễn, bạn có thể ghi các thay đổi của mình vào tệp gốc hoặc chuyển hướng chúng sang tệp mới.
Việc ghi đè tệp gốc của bạn đòi hỏi một số thận trọng. Nếu là của bạn quyến rũ
lệnh sai, bạn có thể thực hiện một số thay đổi đối với tệp gốc khó hoàn tác.
Để yên tâm, quyến rũ
có thể tạo một bản sao lưu của tệp gốc trước khi nó thực thi lệnh.
Bạn có thể sử dụng tùy chọn Tại chỗ (-Tôi
) nóiquyến rũ
để ghi các thay đổi vào tệp gốc, nhưng nếu bạn thêm phần mở rộng tệp vào đó, quyến rũ
sẽ sao lưu tệp gốc sang tệp mới. Nó sẽ có cùng tên với tệp gốc, nhưng có phần mở rộng tệp mới.
Để chứng minh, chúng tôi sẽ tìm kiếm bất kỳ dòng nào có từ “Anh ấy” và xóa chúng. Chúng tôi cũng sẽ sao lưu tệp gốc của mình vào tệp mới bằng phần mở rộng BAK.
Để thực hiện tất cả những điều này, chúng tôi nhập như sau:
sed -i'.bak '' /^.*He.*$/d 'geeks.txt
Chúng tôi nhập như sau để đảm bảo rằng tệp sao lưu của chúng tôi không thay đổi:
cat geeks.txt.bak
Chúng ta cũng có thể gõ như sau để chuyển hướng đầu ra đến một tệp mới và đạt được kết quả tương tự:
sed -i'.bak '' /^.*He.*$/d 'geeks.txt> new_geeks.txt
Chúng tôi sử dụng con mèo
để xác nhận các thay đổi đã được ghi vào tệp mới, như được hiển thị bên dưới:
cat new_geeks.txt
Có quyến rũ tất cả điều đó
Như bạn có thể đã nhận thấy, ngay cả lớp sơn lót nhanh này quyến rũ
là khá dài. Lệnh này có rất nhiều thứ và bạn còn có thể làm được nhiều việc hơn với lệnh này.
Tuy nhiên, hy vọng rằng những khái niệm cơ bản này đã cung cấp một nền tảng vững chắc để bạn có thể xây dựng khi tiếp tục tìm hiểu thêm.