Điều này thay thế 'ở đầu từ:
$ echo "a 'line' a single ' after a 'keyword' with a few space's for a program"| sed "s/'\b/X/g"
a Xline' a single ' after a Xkeyword' with a few spaceXs for a program
Đối với con người, không phải máy tính, có một điểm đặc biệt ở đây: máy tính được tính space'slà hai từ và thay thế 'bởi vì nó nằm ở đầu từ thứ hai.
Thảo luận
\bđánh dấu một ranh giới từ, bắt đầu hoặc kết thúc. Bây giờ hãy xem xét \b'. Điều này phù hợp với một ranh giới từ theo sau a '. Kể từ khi 'là không một nhân vật văn bản, điều này có nghĩa rằng việc chấm dứt từ phải đứng trước 'để phù hợp. Để sử dụng \bđể khớp với lúc bắt đầu của từ, đảo ngược thứ tự : '\b. Một lần nữa, vì 'không phải là một ký tự từ, nên điều này sẽ chỉ khớp nếu một từ theo sau '.
Một số sed, như GNU sed, hỗ trợ \<để bắt đầu từ. Điều này không giúp ích gì trong trường hợp của bạn vì 'đã không phải là một ký tự từ và điều đó buộc vấn đề.
Phải làm gì về "không gian"
Nếu bạn không muốn 'thay thế space'sbởi vì 'xuất hiện ở cuối từ, bạn có thể đảo ngược logic bằng cách sử dụng \B:
$ echo "a 'line' a single ' after a 'keyword' with a few space's for a program"| sed "s/\B'/X/g"
a Xline' a single X after a Xkeyword' with a few space's for a program
\Bkhông khớp với một ranh giới từ . Do đó, \B'khớp với '(không gian trích dẫn) bởi vì không gian cũng như trích dẫn không phải là ký tự từ. Nó không khớp space'bởi vì e'là một ranh giới từ: elà một ký tự từ và 'không.