Làm thế nào để bạn trích xuất toàn bộ một từ có chứa chuỗi con?


7

Nếu tôi có một tập tin trông như thế này:

example.png example.jpg example2.jpg example2.png example.swf
example2.swf example3.jpg example4.jpg example3.png example3.swf 

và tôi muốn trích xuất các từ có chứa swf chẳng hạn, đầu ra sẽ trông giống như thế này

example.swf 
example2.swf
example3.swf

Tôi đã thử grep -o "swf[^[:space:]]*", chỉ in một loạt swf, và sau đó tôi đã thử grep -o '[^ ]*a\.swf[^ ]*', trong đó xuất ra rất ít dòng có chứa "swf". Có ai biết phải làm gì?


3
Bạn đang gần tôi nghĩ - nhưng bạn không muốn grep -o '[^[:space:]]*swf'tức là số không hoặc các ký tự nhiều không gian trước khi các swfchuỗi con?
Steeldo

@steel ấn Tại sao bạn không viết nó như một câu trả lời? Bạn đã nhận được upvote của tôi.
Sparhawk

Câu trả lời:



5

Bạn có thể làm:

grep -o '[^ ]*\.swf' file.txt
  • [^ ]* khớp với 0 hoặc nhiều ký tự không phải khoảng trắng

  • \.swf phù hợp với nghĩa đen .swf

Thí dụ:

% grep -o '[^ ]*\.swf' file.txt
example.swf
example2.swf
example3.swf

4

Bước đầu tiên

Thay thế khoảng trắng bằng đầu dòng bằng sed

Bước thứ hai

Lọc đầu ra bằng grep

Thí dụ

sed -e s/\ /\\n/g file | grep .swf


1
đơn giản và dễ dàng. cách tiếp cận tốt.
Ace
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.