# join pairs of lines side-by-side (like "paste")
sed '$!N;s/\n/ /'上面的脚本来自sourceforge上提供的大量sed一行程序。
我希望在一个bash脚本中使用它,但是如果在脚本中使用它就没有任何效果。如果我通过管道将脚本的输出传递给它,它将按照所述并排连接成对的行。
有些字符必须转义,但我就是看不到需要转义哪个字符才能在bash脚本中工作。
Yoroshiku Onegaishimasu!
稍后..。
#!/bin/bash
# numbers.sh
for X in 1 2 3 4 5 6 7 8 9 0
do
echo $X
done使用此脚本时:
#!/bin/bash
./numbers.sh | sed '$!N;s/\n/ /'工作正常..
1 2
3 4
5 6
7 8
9 0请让我重新整理一下我对此的看法..
稍后..。
我在脚本中找到了破坏它的逻辑错误。
发布于 2009-05-20 01:50:08
如果不看你的脚本,我就不知道问题出在哪里。在这里进行一次快速测试,它在一个简单的脚本中运行良好:
#!/bin/bash
cat /etc/crontab | sed '$!N;s/\n/ /'如果您试图将命令嵌入到字符串或变量中,\n将是一个转义候选。
值得注意的是,除非您真的需要高级容器(这种情况很少见),否则很少有“强有力的”理由直接使用符合/bin/sh posix的shell脚本来创建特定于bash的脚本。最终得到的脚本对于其他几十种与posix/korn/bourne兼容的shell(包括bash)来说,可移植性要强得多。
干杯!肖恩
发布于 2009-05-20 01:53:28
您是否遗漏了指示文件名参数的"$@" -所以它只是从标准输入读取?
行为不端是什么?文件是否被简单地复制到标准输出?
对我很有效-在Cygwin下。'al‘是一个每行列出一个参数的程序。
$ al a b c d e f | sed '$!N;s/\n/ /'
a b
c d
e f
$ cat xxx
sed '$!N;s/\n/ /'
$ al a b c d e f g | bash xxx
a b
c d
e f
g
$https://stackoverflow.com/questions/885798
复制相似问题