Xác định vị trí postion sau đó thực hiện thay đổi bằng cách sử dụng sed


11

Kịch bản này sử dụng sed để thay đổi tất cả "" thành "công cụ mới". Làm thế nào một người sẽ thay đổi chỉ "" sau khi yyy: sử dụng sed hoặc bất cứ điều gì khác?

cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt

Câu trả lời:


8

Tôi có thể không hiểu câu hỏi của bạn. Nếu bạn muốn thay thế CHỈ giá trị sau 'yyy' thì hãy sử dụng câu trả lời trước đó. Nếu bạn muốn thay thế BẤT K value giá trị nào sau 'yyy', hãy thử một lớp lót này:

sed --expression='/yyy/,$ s/""/"new stuff"/g' sample.txt

Chưa kiểm tra nó: D ...


3

Trả lời lượm lặt từ O'Reilly - Bổ sung lần thứ 2 của Sed & Awk xung quanh trang 152

Viết một tập lệnh trong một tập tin

/yyy\:$/{
N
s/yyy\:\n\"\"/yyy\:\
\"new stuff\"/
}

Áp dụng điều này cho dữ liệu của bạn với thông thường

tập lệnh sed -f sample.txt

Kịch bản này nói hãy tìm yyy :. Khi tìm thấy đọc một dòng khác vào bộ đệm mẫu (âm thanh như Star Trek Transporter). Bây giờ làm as / lệnh trên các dòng tham gia. Vì vậy, chúng tôi đang tìm kiếm yyy: dòng mới "". Nếu tìm thấy thay thế bằng yyy: \ thông báo dấu gạch chéo dòng mới thực sự thì "công cụ mới"

Chúc may mắn


1
xem trang man: unixhelp.ed.ac.uk/CGI/man-cgi?sed tìm kiếm đoạn địa chỉ

1

Tôi tìm thấy một khi mọi thứ vượt quá mức độ phức tạp nhất định, tôi chuyển sang perl . s2p sẽ xử lý bản dịch của giải pháp sed hiện tại của bạn. Hoặc bạn có thể viết nó từ đầu một cách tầm thường. Biểu thức tìm kiếm / thay thế sẽ giữ nguyên.

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.