Xóa các dòng bắt đầu bằng #


10

Làm cách nào để xóa các dòng bắt đầu bằng a #, với điều kiện là có thể có khoảng trắng ở bên trái và bên phải của #?

  # Master socket provides access to userdb information. It's typically

Câu trả lời:


13

Điều này có vẻ hiệu quả, nhưng tôi đã không suy nghĩ sâu sắc về nó:

sed -e '/^[[:space:]]*#/d'

10

Bạn có thể sử dụng grepcho điều đó

grep -vh '^[[:space:]]*#' filename

Vì, như tôi đoán, bạn đang tước bình luận từ một số tệp, bạn cũng có thể xem xét xóa các dòng trống, mở rộng phần trên thành:

grep -vh '^[[:space:]]*\(#\|$\)' filename

3

awk giải pháp là đảo ngược phù hợp với mô hình của bạn.

$> cat ./text
elephant
# Master socket provides access to userdb information. It's typically
zoo
 #ok
penguin
# !

$> awk '!/^(\ )*#/ {print $0}' ./text
elephant
zoo
penguin

4
Không cần thoát ký tự khoảng trắng, không cần chụp ký tự khoảng trắng, không cần chỉ định hành động mặc định : awk '!/^ *#/' ./text.
manatwork

awk '/^ *#/{next}1' filenên đủ tốt
jaypal singh


0

Sử dụng dữ liệu mẫu được đăng bởi CÂU HỎI THƯỜNG GẶP ...

$ grep -vPh '^\s*#' filename.txt | grep -Po '\w+'
elephant
zoo
penguin

Tôi thích sử dụng pcre với grep vì vậy tôi sử dụng khóa -P cho grep (phải là GNU grep). Grep thứ hai là đường nguyên chất để cung cấp cho bạn các từ không có khoảng trắng. Nó cũng sẽ "loại bỏ" các dòng trống.


-1
$ perl -pi -e '$_="" if /^\s*#/' filename

Điều đó không tốt - không xóa các dòng và xóa các dòng nhưa#b
Mat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.