LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 880|回复: 2

消除"\"并连接两行为一行

[复制链接]
发表于 2004-1-15 14:55:34 | 显示全部楼层 |阅读模式
如下:
  1. $cat file
  2. 12345  \
  3. 6789
  4. abcde \
  5. fghi
  6. dfjkldadfskdlfajsldkf
  7. ABCDE \
  8. FGHI
  9. 98765 \
  10. 4321
复制代码



想要的结果是
  1. $cat file-end
  2. 123456789
  3. abcdefghi
  4. dfjkldadfskdlfajsldkf
  5. ABCDEFGHI
  6. 987654321
复制代码


就是想把"\"去掉,然后和下一行合并为一行
我一点思路都没有,晕~~~~~
发表于 2004-1-15 15:27:53 | 显示全部楼层
try it : ;)
  1. cat file|tr -d ' '|while read i;do
  2.         echo -n $i
  3.         if echo $i|grep -v -q '\\';then
  4.                 echo "\n"
  5.         fi
  6. done|tr -s '\n'
复制代码
测试结果:
[/home/javalee]cat file|tr -d ' '|while read i;do
=>echo -n $i
=>if echo $i|grep -v -q '\\';then echo "\n";fi;done|tr -s '\n'
123456789
abcdefghi
dfjkldadfskdlfajsldkf
ABCDEFGHI
987654321
发表于 2004-1-16 10:49:44 | 显示全部楼层
[PHP]
0$ cat file
12345  \
6789
abcde \
fghi
dfjkldadfskdlfajsldkf
ABCDE \
FGHI
98765 \
4321
0$ cat end.sh
#!/bin/sh
if test "x$1" = x; then
  echo "Usage: $0 file"
  exit 1
fi

echo "cat >$1-end<<EOF" > $$.tmp
cat $1 | sed -e 's/[ \t]\+$//' -e 's/[ \t]\+\\$/\\/' >> $$.tmp
echo "EOF" >> $$.tmp
sh $$.tmp
rm -f $$.tmp
0$ sh end.sh file
0$ cat file-end
123456789
abcdefghi
dfjkldadfskdlfajsldkf
ABCDEFGHI
987654321
[/PHP]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表