分页: 1 / 1

求助 一个文档处理问题 合并文档类

发表于 : 2009-09-15 16:36
abbott
有两个文档,
AbbNew.txt 每一行的字符用$i表示
FullName.txt 每一行的字符用$j表示
都是字符,

要求最后输出一个文档,具有这样的结构:
@string{$i = {$j}}


我是在建立自己的bibtex数据库,用到期刊的缩写名称对应关系...

Re: 求助 一个文档处理问题 合并文档类

发表于 : 2009-09-15 16:55
t3swing
贴一段出来吧 ,直观一点不容易理解错 ,lz的要求,我会考虑用excel搞定

Re: 求助 一个文档处理问题 合并文档类

发表于 : 2009-09-15 17:05
abbott
AbbNew.txt 内容如下:
[abbott@master temp]$ head -15 AbbNew.txt
Acc. Chem. Res.
ACS Chem. Biol.
ACS Symp. Ser.
Acta Biochim. Pol.
Acta Chim. Slov.
Acta Crystallogr., Sect. A: Found. Crystallogr.
Acta Crystallogr., Sect. D: Biol. Crystallogr.
Acta Crystallogr., Sect. E: Struct. Rep. Online
Acta Crystallogr., Sect. F: Struct. Biol. Cryst. Commun.
Acta Mater.
Acta Pharm. (Zagreb, Croatia)
Acta Pharmacol. Sin.
Acta Phys. Pol. B Proc. Suppl.
Acta Phys. Pol., A
Acta Phys. Pol., B

FullName.txt如下(前15行)
[abbott@master temp]$ head -15 FullNames.txt
Accounts of Chemical Research
ACS Chemical Biology
ACS Symposium Series
Acta Biochimica Polonica
Acta Chimica Slovenica
Acta Crystallographica, Section A: Foundations of Crystallography
Acta Crystallographica, Section E: Structure Reports Online
Acta Crystallographica, Section F: Structural Biology and Crystallization
Acta Materialia
Acta Pharmaceutica (Zagreb, Croatia)
Acta Pharmacologica Sinica
Acta Physica Polonica B Proceedings Supplement
Acta Physica Polonica, A
Acta Physica Polonica, B
Acta Physiologica


原文数白行.....

最后的文档格式:
@string{Acc. Chem. Res. = {Accounts of Chemical Research}}
@string{ACS Chem. Biol. = {ACS Chemical Biology}}
......

由于太麻烦了,我之给出了最后结果的前两行......

Re: 求助 一个文档处理问题 合并文档类

发表于 : 2009-09-16 9:55
t3swing
应该有很简单的方法,期待高人给出,我使用的方法很直观,但显得罗嗦,能够处理

代码: 全选

#!/bin/bash
if [ $# -ne 2 ] ; then
        echo "输入两个文件以便处理!"
        exit 66
fi
line_a=$(wc -l $1 |grep -o "[0-9]*")
line_b=$(wc -l $2 |grep -o "[0-9]*")
echo "文件1行数:$line_a     文件2行数: $line_b"
if [ $line_a -gt $line_b ] ; then
        line=$line_b
else
        line=$line_a
fi
echo "合并行数:$line"

cat /dev/null > outfile.txt

for var in $(seq $line) ;do
        a=$(sed -n "${var}p" $1)
        b=$(sed -n "${var}p" $2)
        echo "@string{${a}={${b}}}" >>outfile.txt
done

exit 0
使用方法 XXX.sh AbbNew.txt FullName.txt
生成文件在outfile.txt(你先确保你文件下面没这个文件,否则删了不负责)
象这种整列文本处理用excel处理起来也很方便,我原来这么搞过

Re: 求助 一个文档处理问题 合并文档类

发表于 : 2009-09-16 10:13
yaoms

代码: 全选

awk 'NR==FNR{a[FNR]=$0} NR>FNR {print "@string{"a[FNR]" = {"$0"}}"}' AbbNew.txt FullNames.txt 

Re: 求助 一个文档处理问题 合并文档类

发表于 : 2009-09-16 10:14
abbott
咱们的做法比较类似.....

#! /bin/bash

AbbFile=Abb_Z.txt
FullFill=FullName_Z.txt
lines=` cat $AbbFile | wc -l `
rm -fr /home/abbott/BibTex/temp/Result.txt

let i=1

for (( num=1; num<=$lines; num++ ))

do
AbbName=`sed -n "$num"p $AbbFile `
FullName=`sed -n "$num"p $FullFill `
let i=$i+1
echo @string{$AbbName = {$FullName}} >> Result.txt
done

处理结果还比较满意.....
目前没想到其他的方法.....

两个文档,在处理之前,我已经给搞成Line相同的了.....

Re: 求助 一个文档处理问题 合并文档类

发表于 : 2009-09-16 10:17
abbott
yaoms 写了:

代码: 全选

awk 'NR==FNR{a[FNR]=$0} NR>FNR {print "@string{"a[FNR]" = {"$0"}}"}' AbbNew.txt FullNames.txt 

这个太强了.....

Re: 求助 一个文档处理问题 合并文档类

发表于 : 2009-09-16 10:23
t3swing
文本处理这一块,只有更强,没有最好
学的东西多着呢 ,光grep sed awk3条命令就够学好久的
强大的awk
学习了

Re: 求助 一个文档处理问题 合并文档类

发表于 : 2009-09-16 13:22
cocoready
如果只是连接在一起,可以用pasted吧。

Re: 求助 一个文档处理问题 合并文档类

发表于 : 2009-09-16 13:31
abbott
paste 可能是我格式控制有问题,
不能保证要求的格式....