【问题标题】:In linux how to replace a sub pattern inside a pattern in a file在linux中如何替换文件中模式内的子模式
【发布时间】:2020-07-09 03:07:01
【问题描述】:

我想改变一个文件,read_write.c的内容

SYSCALL_DEFINE1(lchown, const char __user *, filename, uid_t, user)
SYSCALL_DEFINE2(open, const char __user *, filename, int)

SYSCALL_DEFINE1(lchown, const char __user *, filename, uid_t, user)
SYSCALL_DEFINE2(open, const unsigned char __user*, filename, int)

即我只想更改 SYSCALL_DEFINE2 内的参数,但不想更改 SYSCALL_DEFINE1 内的参数

【问题讨论】:

    标签: string sed regexp-replace


    【解决方案1】:

    使用 GNU sed:

    sed '/SYSCALL_DEFINE2(/,/)/{s/const char __user \*/const unsigned char __user\*/}' file
    

    从包含SYSCALL_DEFINE2( 的行到包含) 的行,这会将const char __user * 替换为const unsigned char __user*

    输出:

    SYSCALL_DEFINE1(lchown, const char __user *, 文件名, uid_t, 用户) SYSCALL_DEFINE2(open, const unsigned char __user*, filename, int)

    查看man sed 并搜索addresses

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-24
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多