我试图使用sed命令将IFS文本文件中的字符串替换为包含换行字符(n)的另一个字符串。除了换行字符外,一切正常。你知道我怎样才能让换行符(n)工作吗?下面是我尝试过的:
- IFS文本文件名为test.txt。以下是该文件的内容:
&1
- 我在一个RPGLE程序中运行了以下命令,将&1替换为"Line 1 n Line 2"的文本,期望n将被翻译成回车和换行字符
QSH CMD('sed -e "s?&1? Line 1 n Line 2 ?g" test.txt > test.out')
- 字符串替换工作,除了换行符(n)字符。结果文件test。出来,如下图所示。n被转换为字符n:
Line 1 n Line 2
- 我也在下面试过,没有一个工作:
QSH CMD('sed -e "s?&1? Line 1 \n Line 2 ?g" test.txt > test.out')
QSH CMD('sed -e "s?&1? Line 1 \\n Line 2 ?g" test.txt > test.out')
我无法正常工作。我最终使用awk实用程序来实现它。下面是awk命令:
QSH CMD('export QIBM_CCSID=1252; awk ''{gsub(/&1/, "Line 1 rn Line 2", $0); print}'' test.txt > test.out')
从call qp2term
开始为我工作:
> echo "&1" > input.txt
echo "&1" > input.txt
> cat input.txt
cat input.txt
&1
> sed -r 's/&1/Line 1 nLine 2n/' <input.txt >output.txt
sed -r 's/&1/Line 1 nLine 2n/' <input.txt >output.txt
> cat output.txt
cat output.txt
Line 1
Line 2
但是,我从QSH得到了和你一样的行为。
QSH CMD('sed -C 819 ''s/&1/Line 1 nLine 2n/'' <input.txt >output2.txt')
QSH CMD('cat output2.txt')
Line 1 nLine 2n
Press ENTER to end terminal session.
我的猜测是它必须做CCSID。即使使用- c 819开关,输出文件也是CCSID 37 - ebcdic。