Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Sed 有选择地替换特定行上的字符_Sed_Zos - Fatal编程技术网

Sed 有选择地替换特定行上的字符

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

我有一个批处理文件,它创建了一个上传到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 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。