Tôi hiểu đó sed
là một lệnh để thao tác tập tin văn bản.
Từ Google của tôi, có vẻ như -i
thực hiện thao tác trên chính tệp, điều này có đúng không?
Thế còn '1d'
?
Tôi hiểu đó sed
là một lệnh để thao tác tập tin văn bản.
Từ Google của tôi, có vẻ như -i
thực hiện thao tác trên chính tệp, điều này có đúng không?
Thế còn '1d'
?
Câu trả lời:
Trong sed
:
-i
tùy chọn sẽ chỉnh sửa tập tin đầu vào tại chỗ
'1d'
sẽ xóa dòng đầu tiên của tệp đầu vào
Thí dụ:
% cat file.txt
foo
bar
% sed -i '1d' file.txt
% cat file.txt
bar
Lưu ý rằng, hầu hết thời gian là một ý tưởng tốt để sao lưu trong khi sử dụng -i
tùy chọn để bạn có tệp gốc được sao lưu trong trường hợp có bất kỳ thay đổi bất ngờ nào.
Ví dụ: nếu bạn làm:
sed -i.orig '1d' file.txt
tệp gốc sẽ được giữ nguyên file.txt.orig
và tệp sửa đổi sẽ là file.txt
.
sed '1d' file.txt
In nội dung của file.txt
; Không bao gồm dòng đầu tiên; đến đầu ra tiêu chuẩn.
sed -i '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS
In nội dung của file.txt
; Không bao gồm dòng đầu tiên; trở lại vào file.txt
; ghi đè lên bản gốc.
sed -i.back '1d' file.txt
Tạo một bản sao lưu của bản gốc (dưới dạng file.txt.back
), trước khi thực hiện các thay đổi. Ngoại trừ FreeBSD sed
, hậu tố (ở đây .back
) phải được gắn vào -i
tùy chọn (trong cùng một đối số, không có khoảng cách giữa -i
và .back
).
sed '2d' file.txt
In nội dung của file.txt
; Không bao gồm dòng thứ hai; đến đầu ra tiêu chuẩn.
(Chỉ định bất kỳ số nào sẽ loại bỏ dòng tương ứng).
Cũng tương thích với -i
cờ.
sed '1!d' file.txt
In nội dung của file.txt
; trừ tất cả nhưng dòng đầu tiên; đến đầu ra tiêu chuẩn.
(Nói cách khác; chỉ dòng đầu tiên được in).
Cũng tương thích với -i
cờ.
sed '$d' file.txt
In nội dung của file.txt
; Không bao gồm dòng cuối cùng; đến đầu ra tiêu chuẩn.
Cũng tương thích với -i
cờ.
Trong sed -h
có:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
và 'thực hiện thao tác trên chính tệp.' tuyệt đối đó là
Và man
nói: 'Sed là một biên tập viên dòng. Trình chỉnh sửa luồng được sử dụng để thực hiện các chuyển đổi văn bản cơ bản trên luồng đầu vào (tệp hoặc đầu vào từ đường ống). '
như câu hỏi của bạn,
sed -i '1d' file_name
có nghĩa là: xóa dòng đầu tiên trong tệp "file_name"
tại chỗ và sao lưu vào tệp. (giống như chỉnh sửa tập tin và xóa dòng đầu tiên trực tiếp.)
-i
xem điều gì xảy ra trước, sau đó sử dụng-i
để thực sự thay đổi tệp.