用逗号分隔的文本文件中的项目排序

时间:2017-10-31 17:26:48

标签: bash csv sorting

我有一个单行文本文件,其中的字符串用引号括起来,并用逗号分隔,如

unsorted.txt

  

“简”, “BOB”, “TIM”, “哈里”

如何使用bash按字母顺序对项目进行排序,我想保存到 sorted.txt

  

“BOB”, “哈里”, “简”, “TIM”

我试过这个,它只对行进行排序,但只有一行。

  

sort -t,unsorted.txt> sorted.txt

我该怎么做?

4 个答案:

答案 0 :(得分:2)

使用Perl:

def parse(self, response):
    for href in response.css('.mask-on-hover + a::attr(href)'):
        yield response.follow(href, self.parse_author)

def parse_author(self, response):
    def extract_with_css(query):

        return response.css(query).extract()

    yield {
        'role': extract_with_css('h1::text'),
        'literature': extract_with_css('h3 span.info::text'),
        'date-posted': extract_with_css('h3 span#ctl00_spListed.info.listed::text'),
        'role-description': extract_with_css('#ctl00_regionContent_lblJobDescription span , strong::text'),}

输出:

"BOB","HARRY","JANE","TIM"

答案 1 :(得分:2)

没有perl:

formset <django.forms.formsets.ContentLineConfigFormFormSet object at 0x10821e3d0>
kwargs {'pk': u'1'}

首先,将逗号转换为换行符,使用换行符进行排序,转换回逗号,然后使用sed删除最后一行的逗号。

答案 2 :(得分:0)

awk

awk -F, '{split($0,a); asort(a); for(i=1;i<=NF;i++) printf "%s", a[i] (i==n?ORS:FS)}'

答案 3 :(得分:0)

另一个使用bash + sort

echo '"JANE","BOB","TIM","HARRY"'|while IFS=',' read -a l;do g=$(printf "%s\n" ${l[*]}|sort);echo ${g//$'\n'/","}; done