Câu trả lời:
Câu trả lời tầm thường là "nhiều dấu gạch chéo ngược, ít khoảng trống hơn":
echo "AXIS2C_HOME=/usr/local/Axis2C" | sed 's/\(^AXIS2C_HOME=\)\(.*\)/\2 \1/'
Nhưng câu trả lời rộng hơn là "chờ đã, bạn đang cố gắng làm gì?" Bạn có muốn các cặp khóa-giá trị được chia thành các biến hữu ích hay bạn thực sự chỉ đang cố gắng chuyển đầu vào thành cú pháp ngược để đưa nó vào một thứ khác?
Bạn có một không gian sai lầm sau =. Thử:
sed 's/\(^AXIS2C_HOME=\)\(.*\)/\2 \1/'
Sau đây cũng hoạt động và ngắn hơn một chút. \1sẽ là bất cứ điều gì trước khi đầu tiên/
sed 's|^\([^/]*\)\(/.*\)|\2 \1|'
Sed là tuyệt vời, nhưng Perl cũng có thể làm điều này và nó không yêu cầu rừng dấu gạch chéo ngược:
% echo "AXIS2C_HOME=/usr/local/Axis2C" | perl -pe 's/(^AXIS2C_HOME=)(.*)/\2 \1/'
/usr/local/Axis2C AXIS2C_HOME=
Ngoài ra, bạn đã có toàn bộ sức mạnh của công cụ biểu thức chính quy, do đó bạn có thể thực hiện các mẫu phức tạp hơn nữa.
sedGNU sed hỗ trợ các biểu thức chính quy mở rộng:echo "AXIS2C_HOME=/usr/local/Axis2C" | sed -r 's/(^AXIS2C_HOME=)(.*)/\2 \1/'