88

Giả sử tôi có một tập tin với các dòng

aaa = bbb

Bây giờ tôi muốn thay thế chúng bằng:

aaa = xxx

Tôi có thể làm như sau:

sed "s / aaa = bbb / aaa = xxx / g"

Bây giờ tôi có một tập tin với một vài dòng như sau:

aaa = bbb
aaa = ccc
aaa = ddd
aaa = [cái gì khác]

Làm thế nào tôi có thể thay thế tất cả các dòng này aaa=[something]bằng aaa=xxxcách sử dụng sed ?

|
156

Thử đi:

sed "s/aaa=.*/aaa=xxx/g"
|
  • 1

    là những gì gcho?

    – Đỗ Linh Hà 15:48:33 11/01/2012
  • 1

    Có thể bỏ qua thói quen này trong trường hợp này - nó được sử dụng như một sự thay thế toàn cầu cho dòng để thay thế mỗi trận đấu thay vì chỉ là trận đấu đầu tiên. Trong trường hợp này mặc dù chỉ người đầu tiên sẽ được kết hợp vì .*.

    – Tạ Nguyệt Nga 15:58:36 11/01/2012
  • 1

    Michael J. Barber, gthay thế tất cả các ví dụ của regrec bằng thay thế

    – Bùi Minh Trang 19:06:13 28/03/2017
79

Bạn cũng có thể sử dụng dòng thay đổi của sed để thực hiện điều này:

sed -i "/aaa=/c\aaa=xxx" your_file_here

Điều này sẽ đi qua và tìm thấy bất kỳ dòng nào vượt qua aaa=bài kiểm tra, có nghĩa là dòng chứa các chữ cái aaa=. Sau đó, nó thay thế toàn bộ dòng bằng aaa = xxx. Bạn có thể thêm một ^điểm vào đầu bài kiểm tra để đảm bảo bạn chỉ nhận được các dòng bắt đầu aaa=nhưng điều đó tùy thuộc vào bạn.

|
38

Như thế này:

sed 's/aaa=.*/aaa=xxx/'

Nếu bạn muốn đảm bảo rằng đó aaa=là ở đầu dòng, hãy thực hiện:

sed 's/^aaa=.*/aaa=xxx/'
|
  • 1

    Nếu tôi muốn thay thế bằng aaa = 'xxxx' thì sao. Tôi đã cố gắng trốn thoát như thế sed 's/aaa=.*/aaa=\'xxx\'/'nhưng điều đó mở ra một >dấu nhắc trong một dòng mới ...

    – Đỗ Linh Hà 14:30:25 21/03/2018
3
sed -i.bak 's/\(aaa=\).*/\1"xxx"/g' your_file
|
2

Nếu bạn muốn sử dụng awkthì nó cũng hoạt động

awk -F= '{$2="xxx";print}' OFS="\=" filename
|
1

Điều này có thể làm việc cho bạn:

cat <<! | sed '/aaa=\(bbb\|ccc\|ddd\)/!s/\(aaa=\).*/\1xxx/'
> aaa=bbb
> aaa=ccc
> aaa=ddd
> aaa=[something else]
!
aaa=bbb
aaa=ccc
aaa=ddd
aaa=xxx
|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.