Câu hỏi ít nhiều nói lên tất cả. Tôi biết rằng /^$/d
sẽ xóa tất cả các dòng trống, nhưng tôi không thể thấy cách nói 'thay thế hai hoặc nhiều dòng trống bằng một dòng trống'
Có ý kiến gì không?
Câu hỏi ít nhiều nói lên tất cả. Tôi biết rằng /^$/d
sẽ xóa tất cả các dòng trống, nhưng tôi không thể thấy cách nói 'thay thế hai hoặc nhiều dòng trống bằng một dòng trống'
Có ý kiến gì không?
Câu trả lời:
Nếu bạn không bắn vim hoặc sed cho một số mục đích sử dụng khác, mèo thực sự có một cách tích hợp dễ dàng để thu gọn nhiều dòng trống, chỉ cần sử dụng cat -s
.
Nếu bạn đã ở trong vim và muốn ở lại đó, bạn có thể thực hiện việc này bằng tìm kiếm nội bộ và thay thế bằng cách phát hành: :%s!\n\n\n\+!^M^M!g
(^ M là đại diện trực quan của một dòng mới, bạn có thể nhập nó bằng cách nhấn Ctrl+ vEnter) hoặc tự lưu gõ bằng cách tách ra để mèo : :%!cat -s
.
:%!cat -s
. Học một cái gì đó GNnew mỗi ngày!
%s!\n\n\n\+!\r\r!g
Sử dụng \n
để chỉ ra một dòng mới trong mẫu tìm kiếm. Sử dụng Ctrl+ Mtrong văn bản thay thế hoặc phản hồi. Xem :help pattern
và :help sub-replace-special
(liên kết từ :help :s
).
%s/\(\n\n\)\n\+/\1/
\n
không hoạt động trong văn bản thay thế.
Nếu trong Vim, chỉ cần làm điều này:
:%!cat -s
man
trang.
Sử dụng Perl:
perl -00 -pe ''
-00
tùy chọn dòng lệnh bật chế độ slurp đoạn, nghĩa là Perl đọc đoạn văn bản theo đoạn chứ không phải từng dòng.
Với sed (GNU sed) 4.2.2:
sed -r '
/^\s*$/ {
# blank line
:NEXT
N # append next line to pattern space - if none, autoprint PS and exit
s/^\s*$\n^\s*$//g;t NEXT # if 2 blank lines, clear PS and loop to NEXT
}
# else, autoprint PS and next/exit
' < $MYFILE
Tôi biết đây là mã ngớ ngẩn, nhưng tôi muốn giải quyết vấn đề này trong chưa đầy 10 phút và nó đã hoạt động
for file in /directory/*
do
originalname=$file
us='_'
tempname=$file$us
echo $originalname
mv $originalname $tempname
uniq $tempname $originalname
rm $tempname
done
uniq
loại bỏ các đường bằng nhau liền kề. Đó không phải là điều OP muốn.
-s
tùy chọn của mèo - chỉ là một ghi chú lịch sử, nó không có trong POSIX, nhưng dường như có sẵn trong mèo BSD và GNU.