簡體   English   中英

如何連接 bash 中 2 個變量的每一行?

[英]How do I concatenate each line of 2 variables in bash?

我有 2 個變量, NUMSTITLES

NUMS包含字符串

1
2
3

TITLES包含字符串

A
B
C

如何獲得 output 看起來像:

1 A
2 B
3 C
paste -d' ' <(echo "$NUMS") <(echo "$TITLES")

變量中有多行字符串表明您可能做錯了什么。 但是你可以試試

paste -d ' ' <(echo "$nums") - <<<"$titles"

paste的基本語法是讀取兩個或多個文件名; 您可以使用命令替換在任何地方替換文件,並且可以使用此處的字符串或其他重定向來接收標准輸入上的“文件”之一(然后文件名通常會替換為偽文件- )。

paste的默認列分隔符是制表符; 您可以使用-d選項將其替換為空格或其他字符。

您應該避免使用大寫的私有變量; 另請參閱正確的 Bash 和 shell 腳本變量大寫

Bash 變量甚至可以包含很長的字符串,但與直接從文件或管道讀取相比,這通常是笨拙且低效的。

將它們轉換為 arrays,如下所示:

NUMS=($NUMS)
TITLES=($TITLES)

然后遍歷任何數組的索引,讓我們說像這樣的 NUMS:

for i in ${!NUMS[*]}; {
    # and echo desired output
    echo "${NUMS[$i]} ${TITLES[$i]}"
}

Awk 替代品:

awk 'FNR==NR { map[FNR]=$0;next } { print map[FNR]" "$0} ' <(echo "$NUMS") <(echo "$TITLE")

對於第一個文件/變量(NR==FNR),設置一個名為 map 的數組,其中文件號記錄作為索引,行作為值。 然后對於第二個文件,打印數組中的條目以及用空格分隔的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM