Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在行尾减去1位置添加sed文本_Linux_Shell_Sed - Fatal编程技术网

Linux 如何在行尾减去1位置添加sed文本

Linux 如何在行尾减去1位置添加sed文本,linux,shell,sed,Linux,Shell,Sed,我想在输入文件中以resourceFilters:开头的行的最后一个字符前面添加文本[*,test,*](该字符串前面可以有任意数量的空格) 下面是这一行的一个例子 resourceFilters: '[Event,*,*][*,kube-system,*][*,kube-public,*][*,kube-node-lease,*][Node,*,*][APIService,*,*][TokenReview,*,*][SubjectAccessReview,*,*][Binding,*,*][R

我想在输入文件中以
resourceFilters:
开头的行的最后一个字符前面添加文本
[*,test,*]
(该字符串前面可以有任意数量的空格)

下面是这一行的一个例子

resourceFilters: '[Event,*,*][*,kube-system,*][*,kube-public,*][*,kube-node-lease,*][Node,*,*][APIService,*,*][TokenReview,*,*][SubjectAccessReview,*,*][Binding,*,*][ReplicaSet,*,*]'
将其更改为:

resourceFilters: '[Event,*,*][*,kube-system,*][*,kube-public,*][*,kube-node-lease,*][Node,*,*][APIService,*,*][TokenReview,*,*][SubjectAccessReview,*,*][Binding,*,*][ReplicaSet,*,*][*,test,*]'
sed/^*resourceFilters:'/s/'$/[*,test,*]'/“您的_文件
  • 我已经用双引号引用了Sed命令,以便在其中使用单引号
  • /^resourceFilters:'/
    使以下
    s
    substitution命令仅作用于以
    resourceFilters开头的行:'
  • s/'$/[*,test,*]/
    是一个替换命令,它匹配行末尾(
    $
    )处的
    ,并将
    [*,test,*]
    替换到它,有效地将
    [*,test,*]
    插入到
    之前
这可能适合您(GNU-sed):

在包含
resourceFilters:
的行上进行匹配,并在该行的最后一个字符之前插入
[*,test,*]

sed -E 's/^(\s*resourceFilters:.*)(.)$/\1[*,test,*]\2/' file