Bash: Làm thế nào tôi có thể thay thế một chuỗi trong một lệnh trước đó?


11

Tôi cần thay thế một từ trong dòng hoặc URL nhưng tôi cần phải làm từ dòng lệnh / thiết bị đầu cuối.

Ý tôi là

$ ./myscript.sh xxx.xxx.xxx.xxx:8080/code -c code1 -t query

Bây giờ từ đó, không cần quay lại, tôi cần thay thế code1bằng mycodehoặc một số chuỗi khác.


Tại sao bạn cần nó?
choroba

url có thể chứa khác bkhông?
khi quân

Bạn có thể vui lòng làm rõ làm thế nào bạn có được chuỗi ban đầu trong đầu vào. Từ bài đăng của bạn, có vẻ như trên thiết bị đầu cuối của bạn cũng vậy, bạn đã gõ nó như một lệnh
lese

Raja ... một biến thể của echo http://xxx.xxx.xxx.xxx/a/b/b/c/d/e | sed 's/b/c/g'? Vui lòng cho biết bạn muốn làm gì, thực hiện lệnh, gọi chương trình sẽ đạt url đó, thay đổi giá trị biến ...?!?
Hastur

Câu trả lời:


31

Tôi đã đổi tên tập lệnh của bạn, nhưng đây là một tùy chọn:

$ ./myscript.sh xxx.xxx.xxx.xxx:8080/code -c code1 -t query

Sau khi thực thi tập lệnh, sử dụng:

$ ^code1^code2

... Kết quả là:

./myscript.sh xxx.xxx.xxx.xxx:8080/code -c code2 -t query

man bash và tìm kiếm "Nhà thiết kế sự kiện":

^ chuỗi1 ^ chuỗi2 ^

Thay thế nhanh chóng. Lặp lại lệnh cuối cùng, thay thế chuỗi1 bằng chuỗi2. Tương đương với !!: s / string1 / string2 /

Chỉnh sửa để thêm thay thế toàn cầu, điều mà tôi vừa học được từ câu trả lời của @ slm tại https://unix.stackexchange.com/a/116626/117549 :

$ !!:gs/string1/string2

mà nói:

!! - recall the last command
g - perform the substitution over the whole line
s/string1/string2 - replace string1 with string2

Xin chào, tôi đã trải qua một số trường hợp. Đây là nó ^logfile1^logfile2. Xin vui lòng giúp đỡ. Cảm ơn bạn.
rdʒɑ

@Raja Tôi đã cập nhật câu trả lời với tìm kiếm & thay thế toàn cầu
Jeff Schaller

3
Tất nhiên bạn sử dụng !!để lặp lại toàn bộ lệnh trước đó, không thay đổi, nhưng hầu như mọi thứ bắt đầu !!:đều có thể rút ngắn lại !:; ví dụ !:gs/string1/string2.
G-Man nói 'Phục hồi Monica'

3
Các ^cú pháp làm việc trong zshlà tốt. Chỉ là tài liệu cho hậu thế.
Kevin Scos

2
^foo^bar^:Gđể tìm kiếm toàn cầu và thay thế.
HappyFace
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.