簡體   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