Chinaunix

标题: 如何将文本文件中超过指定长度的行拆分为若干行,并且不能拆开单词? [打印本页]

作者: 两种文化    时间: 2014-03-19 18:03
标题: 如何将文本文件中超过指定长度的行拆分为若干行,并且不能拆开单词?
本帖最后由 两种文化 于 2014-03-19 21:38 编辑

文本test中有若干行,每一行长度不一样,现在将长度超过2400的行拆分为多行,但是要求拆分的时候不能把单词拆开,如果要拆分的位置是单词字母的话,要从它左边附近的空格拆分。
比如某一行有3000个字符,第2391至2345内容如下:
stop startup  aaaa
那我们拆分的时候就不能把startup拆开,要在stop后面的空格拆。


作者: 两种文化    时间: 2014-03-20 12:39
求大侠指导啊。
作者: lipengyu1573    时间: 2014-03-20 16:40
回复 2# 两种文化


    我也是新手,你这问题我只有一个笨法子。
    脚本:
            /bin/bash
        abc="abcdef ghi jk lmn opq rst uvw xyz"
        echo $abc|wc -c
       
        abc1=`echo $abc|cut -c '1-20'`
        abc2=`echo $abc|cut -c '21-'`
        abc1_new=`echo $abc1|sed 's/\(.*\) /\1\n/'`
        abc_new=${abc1_new}${abc2}
       
        echo "$abc_new"
作者: lipengyu1573    时间: 2014-03-20 17:26
回复 2# 两种文化


好像不完整,这样,重写到wenben2中


#!/bin/bash
cat wenben|while read hang
do
shu=`echo $hang|wc -c`
if [ "$shu" -ge "2400" ] ;then
        hang1=`echo $hang|cut -c '1-2400'`
        hang2=`echo $hang|cut -c '2401-'`
        hang1_new=`echo $hang1|sed 's/\(.*\) /\1\n/'`
        hang_new=${hang1_new}${hang2}
        echo "$hang_new" >> wenben_new
else
        echo "$hang" >>wenben_new
fi
done
作者: 惟吾无为    时间: 2014-03-20 21:22
fold命令不能用?
作者: q1208c    时间: 2014-03-21 07:52
echo "ad aldkfad flad sflas dfdlas fdlas fjasdl fasdl fasdjfl daskf;ajsdfaadlfadf adlf asdlf asdf ladsf
" | sed -e 's/\(.\{1,30\}\) /\1\n/g'




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2