用sed:
sed '$!Ns/\n/哪野陵/李戚' filename
用awk:
awk '{if(NR%2==0) ORS="\n"else ORS=""print}' filename
linux文件中连续多行合并http://blog.uouo123.com/post/396.html
sed按条件多行合并为脊扒一行http://blog.uouo123.com/post/397.html
#/bin/bashcount1=`cat file1|wc -l`
count2=`cat file2|wc -l`
a=`expr $count1 - $count2`
if [ $a -gt 0 ]then
for((i=1i<=$count2i++))
do
x=${i}"p"
echo "`cat file1|sed -n "$x"` `cat file2|sed -n "$x"尘御迟`" >>/result.log
done
count=`expr $count2 + 1`
for((j=$countj<=$count1j++))
do
y=${j}"p"
z=${count2}"p"
echo "`cat file1|sed -n "$y"` `cat file2|sed -n "$z"`" >>/result.log
done
elif [ $a -lt 0 ]then
for((i=1i<=$count1i++))
do
x=${i}"p"
echo "`cat file2|sed -n "$x"` `cat file1|sed -n "$x"`" >>/result.log
done
count=`expr $count1 + 1`
for((j=$countj<=$count2j++))
do
y=${j}"p"
z=${count1}"p"
echo "`cat file2|sed -n "$y"` `cat file1|sed -n "$z"`" >>/result.log
done
else
for((k=1k<=$count1k++))
do
f=${k}"p"
echo "`cat file1|sed -n "$f"` `cat file2|sed -n "$f"`" >>/result.log
done
fi
行数小的写在行数大的后面,同拆唯行的话直接第二个文件内容写派李在第一个后面
我通过以下测试,发现思路基本没有问题:
一个文本文件a,最后一行是exit 0,一个二进制文件(用系统中的cat测试)
cat a /bin/cat >bsed -n '1,/^exit 0$/!p' b >c
chmod +x c
./c a
通过以上命令,依次将文本文件a和二进制文件cat合并到b,用sed又把cat的二进制内容提取到 了c文件,将c文件变为可执行,c的扰如饥功能和cat一样。
检测错缓返误:
(1)确保在合并之前你的压缩文件解压正常。
(2)确保前面的文本最后一行是exit 0,并且后面没有空格或空行。确保文本文件中间没有exit 0【可以用sed -n '1,/^exit 0$/p' install.bin >c,对比c文件和原来的文本文件install.sh文件大小、内容一模一样。或者检查解析出来的压缩文件和原来的压缩橡滚文件大小是否相同】
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)