连接文件

时间:2015-10-12 18:24:57

标签: linux bash cat

当我尝试使用循环连接多个文件时,它会将后续文件的第一行与前一个文件的最后一行连接起来。 例如,我有以下两个文件:

from scrapy import Spider
from scrapy.selector import Selector
from parser_xxx.items import XxxItem

class XxxSpider(Spider):
    name = "xxx"
    allowed_domains = ["xxx.xxx.com"]
    start_urls = ["http://xxx.xxx.com/jobs/"]

    def parse(self, response):
        quelist = Selector(response).xpath('//div[@id="job_listings"]')
        for que in quelist:
           item = XxxItem()
           item['title'] = que.xpath('//a//h4/text()').extract()
           item['link']  = que.xpath('//a/@href').extract()
           yield item

我使用以下脚本

File1   File2   
1.234    12.11
2.345    0.00
11.567   4.56
7.890    2.34    

以下是for i in File1 File2 do cat $i & done >> tmp.txt 的样子

tmp.txt

这只是一个例子,它可以通过使用" Enter"来解决。密钥,但我有大约100个这些文件,每个文件有近50行。

3 个答案:

答案 0 :(得分:3)

这里不需要循环。您可以一次性直接连接文件:

cat File1 File2 >> tmp.txt

答案 1 :(得分:0)

下面的脚本将循环显示当前 public View getViewByPosition(int pos, ListView listView) { final int firstListItemPosition = listView.getFirstVisiblePosition(); final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1; if (pos < firstListItemPosition || pos > lastListItemPosition ) { return listView.getAdapter().getView(pos, null, listView); } else { final int childIndex = pos - firstListItemPosition; return listView.getChildAt(childIndex); } } //check above function return the view and now call the function View v = getViewByPosition(position, list); LinearLayout vwParentRow1 = (LinearLayout) v; TextView btnChild1 = (TextView) vwParentRow1.getChildAt(0); String firstcolumn = btnChild1.getText().toString(); 上的所有.txt个文件,并将它们连接到dir

temp.out

注意:

我已经使用您提供的示例对脚本进行了测试,并且按预期工作。

#!/bin/bash
FILES=./*.txt
for f in $FILES
do
  cat $f >> temp.out
done

答案 2 :(得分:0)

正如其他人已经建立的那样,你的问题是由行结尾引起的。我建议通过awk运行你的文件来规范它们:

awk '{ sub(/\r$/, ""); print }' File1 File2 > tmp.txt

这将从每条记录的末尾(如果存在)中删除回车符(\r,Windows样式行结尾的一部分)。 print将输出记录分隔符(ORS,Linux上的换行符\n)附加到每一行。

请注意,这里绝对不需要循环。多个文件可以作为参数传递给awk(或者cat就此而言,实际上这就是cat的重点)。

测试它,使用一些带有Windows样式行结尾的文件,并且每个文件的末尾都没有换行符:

$ cat file1 file2
1.234
2.345
11.567
7.89012.11
0.00
4.56
$ awk '{ sub(/\r$/, ""); print }' file1 file2
1.234
2.345
11.567
7.890
12.11
0.00
4.56
2.34