Tôi đang tìm cách thay thế các chuỗi giữ chỗ trong tệp mẫu bằng các giá trị cụ thể, bằng các công cụ Unix phổ biến (bash, sed, awk, có thể perl). Điều quan trọng là việc thay thế được thực hiện trong một lần duy nhất, nghĩa là, những gì đã được quét / thay thế không được xem xét cho sự thay thế khác. Ví dụ: hai lần thử này đều thất bại:
echo "AB" | awk '{gsub("A","B");gsub("B","A");print}'
>> AA
echo "AB" | sed 's/A/B/g;s/B/A/g'
>> AA
Kết quả đúng trong trường hợp này là khóa học BA.
Nói chung, giải pháp nên tương đương với việc quét đầu vào từ trái sang phải để khớp lâu nhất với một trong các chuỗi thay thế đã cho và cho mỗi trận đấu, thực hiện thay thế và tiếp tục từ điểm đó trong đầu vào (không có gì trong số đó đã đọc đầu vào cũng như thay thế được thực hiện nên được xem xét cho phù hợp). Trên thực tế, các chi tiết không quan trọng, chỉ là kết quả của sự thay thế không bao giờ được xem xét cho sự thay thế khác, toàn bộ hoặc một phần.
LƯU Ý Tôi chỉ tìm kiếm các giải pháp chung chính xác. Vui lòng không đề xuất các giải pháp thất bại cho một số đầu vào nhất định (tệp đầu vào, tìm kiếm và thay thế các cặp), tuy nhiên dường như chúng không có vẻ.
tr AB BA
.