Câu trả lời:
Trong tiếng Anh, sedchương trình này có nghĩa là: cho mỗi dòng,
123!] nếu số dòng hiện tại không phải là 123, thì [ d] xóa dòng hiện tại và bắt đầu chu kỳ tiếp theo (tức là chuyển sang dòng tiếp theo);dlệnh không được thực thi), [ q] thoát mà không xử lý thêm bất kỳ dòng nào (nhưng in ra dòng hiện tại trong các đoạn chết của chúng tôi).Hoặc nếu bạn thích, theo cú pháp shell:
line_number=0
while IFS= read -r pattern_space; do
line_number=$(($line_number+1))
if [ $line_number -ne 123 ]; then # 123!
continue # d
fi
echo "$pattern_space"; break # q
echo "$pattern_space" # implicit final print (never reached)
done
{d;q;}, không nên qáp dụng cho mọi dòng (vì vậy chỉ đầu tiên)?
qáp dụng cho mọi dòng nơi nó được thực thi. Nhưng khi số dòng không phải là 123, dlệnh được thực thi và ý nghĩa của nó là bỏ qua ngay lập tức đến dòng đầu vào tiếp theo.
sed -n 123p(in cùng một đầu ra) ngoại trừ nó dừng sau dòng 123 thay vì xử lý hàng nghìn dòng có khả năng mà nó sẽ không bao giờ làm bất cứ điều gì với bất kỳ cách nào.
!là đã kết nốid, không phải123.