Sed 有选择地替换特定行上的字符
我有一个批处理文件,它创建了一个上传到z/OS的文件,连接了一个目录中的所有Pascal文件。该文件如下所示:Sed 有选择地替换特定行上的字符,sed,zos,Sed,Zos,我有一个批处理文件,它创建了一个上传到z/OS的文件,连接了一个目录中的所有Pascal文件。该文件如下所示: ./ ADD LIST=ALL,NAME=AFTER_W text text text ./ ADD LIST=ALL,NAME=WHATEVER text more text ./ ADD LIST=ALL,NAME=A-FILE text and other text ./ ADD LIST=ALL,NAME=(C)OPY text blah blah 问题是我不能在z/OS P
./ ADD LIST=ALL,NAME=AFTER_W
text
text
text
./ ADD LIST=ALL,NAME=WHATEVER
text
more text
./ ADD LIST=ALL,NAME=A-FILE
text
and other text
./ ADD LIST=ALL,NAME=(C)OPY
text
blah
blah
问题是我不能在z/OS PDS成员名称中使用某些字符((
,)
,-
,和
),因此我需要一些东西将这四个字符更改为可接受的字符(C
,C
,
,和$/code>),但是仅在以/ADD
开头的行上。因此,对于上述输入,输出为:
./ ADD LIST=ALL,NAME=AFTER$W
text
text
text
./ ADD LIST=ALL,NAME=WHATEVER
text
more text
./ ADD LIST=ALL,NAME=A#FILE
text
and other text
./ ADD LIST=ALL,NAME=CCCOPY
text
blah
blah
如果您只想在匹配/ADD
的行上进行这些替换(()-
到CC$
),这就足够了:
sed '/\.\/ ADD /y/()-_/CC#$/' yourinput
此代码将y
命令“”应用于匹配/ADD
的所有行,其中
因其为元字符而转义,/
因其为正则表达式的(不可变)分隔符而转义,其他所有内容均为文字;y
命令的语法为y/abc/def/
,将a
替换为d
,b
替换为e
,c
替换为f
(并且可以将分隔符更改为其他内容,例如y!abc!edf!
)
[1] 它是音译命令;我不知道它叫Y
,但是t
是由t
est命令执行的。如果您只想在匹配/ADD
的行上进行那些替换(()-
到CC$
),这就足够了:
sed '/\.\/ ADD /y/()-_/CC#$/' yourinput
此代码将y
命令“”应用于匹配/ADD
的所有行,其中
因其为元字符而转义,/
因其为正则表达式的(不可变)分隔符而转义,其他所有内容均为文字;y
命令的语法为y/abc/def/
,将a
替换为d
,b
替换为e
,c
替换为f
(并且可以将分隔符更改为其他内容,例如y!abc!edf!
)
[1] 它是音译命令;我不知道它叫Y
,但是t
是由t
est命令执行的。请发布您想要的输出<编码>到可接受的东西中
到哪一个。请具体说明。您只能在匹配的模式上应用sed脚本,例如sed'/.\/ADD/{s/(/C/g}')
在StackOverflow中查看这一点(因为这是sed
问题,而不是z/OS特有的问题)请将您想要获得的输出。发布到可接受的
中,具体到哪一个中。请具体说明。您只能在匹配的模式上应用sed脚本,例如sed'/.\/ADD/{s/(/C/g}'
请在StackOverflow中查看此问题(因为这是sed
问题,而不是z/OS特定问题)这正是我所需要的,并且模仿了PL/I和REXX上的translate()函数,这是我更熟悉的z/OS语言。谢谢!显然我接受这个答案,但我怎么做呢?我尝试添加了一个[Solved]标题,但那是不被接受的!我可以把它投到我脸色发青之前,但作为一个名声不到15岁的人,它没有表现出来。@RobertPrins,。这正是我需要的,并且模仿了translate()PL/I和REXX上的函数,这是我更熟悉的z/OS语言。谢谢!显然我接受答案,但我该怎么做呢?我尝试在标题中添加一个[已解决的],但这不被接受!我可以对它进行投票,直到我脸色发青,但作为一个名声不到15岁的人,这并没有表现出来。@RobertPrins。