繁体   English   中英

在bash中对列表排序1

[英]Sorting a list in bash 1

我在test.idx中有很多文本,我将用:

# alt: Spanish
# alt: German
# alt: Englisch

我的脚本:

#!/bin/bash
results=$(cat /home/test.idx | grep "# alt:" | awk '{print $3}')
echo "$results"

输出在彼此之间:

Spanish
German
English

如何一个接一个地输出?

Spanish German English

问候

一种方法,将其粘贴到管道中:

awk '{print $3}' | paste -s -

另一个,使用printf而不是print:

awk '{printf "%s ", $3} END { print "" }'
$ awk '/# alt:/{printf "%s%s", (NR>1 ? OFS : ""), $NF} END{print ""}' file
Spanish German Englisch

并回应您在@jas的回答下的评论:

$ awk -v OFS=', ' '/# alt:/{printf "%s%s", (NR>1 ? OFS : ""), $NF} END{print ""}' file
Spanish, German, Englisch

这仅适用于单字语言,例如,如果您必须处理“古希腊语”,那么您需要一个略有不同的解决方案,例如:

$ cat file
# alt: Spanish
# alt: Ancient Greek
# alt: Englisch
# alt: Upper Sorbian

$ awk -v OFS=', ' 'sub(/^# alt: */,""){printf "%s%s", (NR>1 ? OFS : ""), $0} END{print ""}' file
Spanish, Ancient Greek, Englisch, Upper Sorbian

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM