Chuỗi stdout thao tác, xóa tất cả sau một từ trên mỗi dòng


0

Chuỗi của tôi trông như thế này ..

foo<.............................. 
bar</............................

Tôi muốn ống cho đầu ra như

foo
bar

Xóa tất cả các ký tự sau lần đầu tiên <tìm thấy mỗi dòng.


Đã thử tách chuỗi theo dòng, sau đó <và chỉ xuất ra phần tử đầu tiên trên mỗi dòng?
user98085

@Lekensteyn Tôi sẽ đánh giá cao nếu bạn giúp tôi giải quyết nó sed, tôi thực sự muốn biết điều đó .. Cảm ơn trước.
Smile.Hunter

Câu trả lời:


9

Đây là sed cơ bản. Sử dụng sed không khó một khi bạn biết các biểu thức thông thường . Một sedlệnh cơ bản để đọc đầu vào và tước từng phần <và phần sau nếu nó tồn tại, sau đó in dòng (có thể được sửa đổi):

$ echo 'foo<....' | sed 's/<.*//'
foo

sedsử dụng các biểu thức chính quy , văn bản trang thủ công có liên quan cho sed(1)lệnh áp dụng cho lệnh trên:

s / regapi / thay thế /
Cố gắng khớp regrec với không gian mẫu. Nếu thành công, thay thế phần đó phù hợp với thay thế. Sự thay thế có thể chứa ký tự đặc biệt & để chỉ phần đó của không gian mẫu phù hợp và thoát đặc biệt \ 1 đến \ 9 để chỉ các biểu thức phụ phù hợp tương ứng trong biểu thức chính quy

Thay thế bằng cách sử dụng cut( trang thủ công chocut(1) ), "chia chuỗi theo <và lấy trường 1thứ.

echo 'foo<....' | cut -d'<' -f1

Thay thế bằng cách sử dụng grep, "chỉ khớp mọi thứ có chứa các ký tự của tập a thành z (không phân biệt chữ hoa chữ thường)" ( trang thủ công củagrep(1) ):

echo 'foo<....' | grep -io '[a-z]*'

(lưu ý: Tôi đã sử dụng quyền tự do [a-z]*, nghĩa là "không có hoặc nhiều lần xuất hiện của một chữ cái", bởi vì grep sẽ không trả về một dòng trống khi sử dụng -otùy chọn)

Thay thế bằng cách sử dụng awk, sử dụng cùng một ý tưởng về cut( trang thủ công củaawk(1) ):

echo 'foo<....' | awk -F '<' '{print $1}'

1

Mẫu vật:

cat textWithFooBar.txt | cut -d '<' -f 1 > output.txt


2
Sử dụng hoàn hảo cho cutngoại trừ "Sử dụng mèo vô dụng" -cut -d '<' -f 1 < textWithFooBar.txt > output.txt
glenn jackman
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.