Мне нужно преобразовать один символ LF (x'0A ') в файле z / OS UNIX, чтобы связать символы CRLF (x'0D'x'0A'), используя неинтерактивный поток sed editoR, вызываемый из шага JCL z / OS.
Бродя по этому веб-сайту, я нашел другие посты и попробовал этот шаг JCL:
//SEDSTEP EXEC PGM=BPXBATCH,REGION=0M
//STDERR DD SYSOUT=2
//STDOUT DD SYSOUT=2
//STDPARM DD *
SH sed 's/\x0A/\x0Dx0A/g' </u/sftp/zwnmsft/E/wnmcapdf/arxiu_unix.txt
>/u/sftp/zwnmsft/E/wnmcapdf/arxiu_unix_sed.txt
/*
К сожалению, он не работает должным образом.
Любая помощь будет принята с благодарностью.
Заранее спасибо
После прочтения ваших комментариев я добавляю новую информацию, предназначенную для выяснения проблемы:
1 - файл, который я пытаюсь преобразовать, находится в z / OS UNIX, но содержит символы ASCII, которые нельзя понять; не EBCDIC.
2- Этот файл не содержит нативного символа новой строки EBCDIC X'15 '.
3 - Файл, который я пытаюсь преобразовать, выглядит после выполнения команды od -cx:
ZXDALMA@CIGC:/u/sftp/zwnmsft/E/wnmcapdf> od -cx arxiu_unix.txt
0000000000 060 061 062 063 064 065 066 067 070 071 012 071 070 067 066 065
3031 3233 3435 3637 3839 0A39 3837 3635
0000000020 064 063 062 061 060 012
3433 3231 300A
0000000026
4 - ЕСЛИ я запускаю альтернативу awk следующим образом:
//AWK EXEC PGM=BPXBATCH,REGION=0M
//STDERR DD SYSOUT=2
//STDOUT DD SYSOUT=2
//STDPARM DD *
SH awk '{ORS=""; gsub("\x0A","\x0D\x0A"); print}'
/u/sftp/zwnmsft/E/wnmcapdf/arxiu_unix.txt >
/u/sftp/zwnmsft/E/wnmcapdf/arxiu_unix_bis.txt
/*
Я получаю желаемые результаты:
ZXDALMA@CIGC:/u/sftp/zwnmsft/E/wnmcapdf> od -cx arxiu_unix_bis.txt
0000000000 060 061 062 063 064 065 066 067 070 071 \r 012 071 070 067 066
3031 3233 3435 3637 3839 0D0A 3938 3736
0000000020 065 064 063 062 061 060 \r 012
3534 3332 3130 0D0A
0000000030
5 и последнее - если я выполняю команду sed, то получаю следующее:
ZXDALMA@CIGC:/u/sftp/zwnmsft/E/wnmcapdf> od -cx arxiu_unix_sed.txt
0000000000 060 061 062 063 064 065 066 067 070 071 012 071 070 067 066 065
3031 3233 3435 3637 3839 0A39 3837 3635
0000000020 064 063 062 061 060 012 \n
3433 3231 300A 1500
0000000027
Я надеюсь, что эти объяснения помогут понять ситуацию, с которой я столкнулся.
Новое добавление информации из комментария Hogstrom:
Вот вывод команды ls -H:
ZXDALMA@CIGC:/u/sftp/zwnmsft/E/wnmcapdf> ls -H arxiu_unix.txt
-rwxrwxrwx bin 1 ZWNMSFT G@PROJ 22 Sep 5 12:17 arxiu_unix.txt
Что касается переменной среды, то здесь выводится, если я выполню команду env:
ZXDALMA@CIGC:/u/sftp/zwnmsft/E/wnmcapdf> env
_BPX_TERMPATH=OMVS
PATH=/bin:/usr/bin:/usr/lib:/usr/lpp/dfsms/bin:/usr/lpp/java/J7.1_64/bin:/u/zxda
lma::/usr/bin:/usr/lib:/usr/lpp/dfsms/bin
SHELL=/bin/sh
PS1=$LOGNAME@$SYS:$PWD>
COLUMNS=80
PS2=>>
SYS=CIGC
_BPX_SPAWN_SCRIPT=YES
_=/bin/env
_BPXK_SETIBMOPT_TRANSPORT=TCPIP
STEPLIB=none
LOGNAME=ZXDALMA
TERM=dumb
_BPX_SHAREAS=YES
HOME=/u/zxdalma
LINES=20
TZ=MET-1DMET-2,M3.5.0/02:00:00,M10.5.0
Еще одна важная деталь: недавно я понял, что в нашей установке z / OS UNIX символ ESCape - это [, а не традиционный.
Я видел эту деталь, наблюдающую в нижней части терминала, я вижу это:
ZXDALMA@CIGC:/u/sftp/zwnmsft/E/wnmcapdf>
===>
INPUT
ESC=[ 1=Help 2=SubCmd 3=HlpRetrn 4=Top 5=Bottom 6=TSO
7=BackScr 8=Scroll 9=NextSess 10=Refresh 11=FwdRetr 12=Retrieve
Я также попробовал использовать команду sed вместо \; но, к сожалению, я получаю те же результаты