【问题标题】:How to combine two text files into one with a specific format with shell script?如何使用 shell 脚本将两个文本文件合并为一个具有特定格式的文件?
【发布时间】:2013-05-28 17:35:49
【问题描述】:

我正在尝试将两个文件合并为一个具有特定格式的文件,这些文件包含以下内容:

文件A.txt:

2

1

1

...

文件B.txt:

0023412322

1241231132

1234411177

...

所以输出应该是: 文件C.txt:

甲乙

2 0023412322

1 1241231132

1 1234411177

...

其中A和B代表列名,也构成输出文件的首行

脚本应该在 Solaris 上运行,但我也遇到了指令 awk 的问题,我不允许在系统上更改或安装任何东西。现在我有一个使用循环的解决方案,但效率不高,因为脚本在处理大文件时花费的时间太长。所以除了使用 awk 指令和循环之外,还有什么建议吗?

我永远不能使用 awk 指令,所以我没有 awk 指令,只有循环:

echo "A B" > fileC.txt

i=echo 1

cat fileA.txt中的行

do

    VAR=`sed -n "$i"',1p' fileB.txt`

    echo "$line $VAR" >> fileC.txt

    echo "$VAR" >> file"$line".txt #Another neccesary command for the script 

    i=`expr $i + 1`

完成

我应该做些什么改变?

【问题讨论】:

  • 请向我们展示您尝试过的内容(包括 awk 和循环)
  • 现在有问题

标签: shell text-files solaris


【解决方案1】:

paste 是一个非常方便的程序,它几乎可以完全满足您的需求,无需打印文件名或写入文件。我编写了这个简单的 shell 脚本来添加文件名:

echo -e "$1\t$2" # print the filenames separated by a tab
paste $1 $2

您可以通过使用chmod 使其可执行,然后运行./myscript file1 file2 来运行它(假设您将脚本命名为myscript)。如果要写入第三个文件,可以./myscript file1 file2 > file3

请注意,正如所写,每个文件的内容由制表符分隔。如果您希望它们改为由空格分隔,则可以改用此脚本:

echo "$1 $2"
paste -d" " $1 $2

【讨论】:

    猜你喜欢
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多