Как объединить строковые переменные в Bash

Введение Утилиты Bash упрощают многие задачи, но не для всех задач есть простые команды или операторы. Очень распространенная и обычная задача во многих сценариях сценариев - объединение строковых переменных. Bash не имеет встроенной функции или утилиты командной строки для объединения двух строк вместе. Однако есть много способов добиться этого. Объединение строк в Bash Ниже приведены шаги, с помощью которых строки могут быть объединены, упорядоченные по уровню сложности.

Вступление

Утилиты Bash упрощают так много задач, но не все задачи имеют прямую команду или оператор. Очень распространенная и обычная задача во многих сценариях сценариев - объединение строковых переменных.

Bash не имеет встроенной функции или утилиты командной строки для объединения двух строк вместе. Однако есть много способов добиться этого.

Объединение строк в Bash

Ниже приведены шаги, с помощью которых можно объединить строки, упорядоченные по уровню сложности:

  1. echo обе переменные
  2. Форматирование с помощью printf
  3. Форматирование с использованием awk
  4. Concat строковые файлы с использованием join

На протяжении всей статьи мы будем использовать переменные string1 и string2 которые вы можете создать в своей оболочке, введя:

 $ string1="Stuck" 
 $ string2="Together" 

Объединение строк в Bash с помощью echo

Возможно, самый простой из всех уловок - просто повторить обе переменные, отформатированные рядом друг с другом:

 $ echo "${string1}" "${string2}" 

Обратите внимание, что у нас есть пробел между обеими строками. Фрагмент также можно записать как:

 $ echo "${string1} ${string2}" 

Оба фрагмента дадут одинаковый результат:

 Stuck Together 

Объединение строк в Bash с помощью printf

Давайте попробуем объединить строки, распечатав форматированный вывод на телетайпе, то есть на терминале . Рассмотрим следующий фрагмент, где два тега формата строки ( %s ) разделены пустым пространством, которое можно заменить двумя переменными - $string1 и $string2 :

 $ printf "%s %s\n" "$string1" "$string2" 

Два тега формата при замене на наши строковые переменные вывода:

 Stuck Together 

Форматирование строк может показаться знакомым, если вы знакомы с языками программирования. Если вам это кажется ошеломляющим, полезно узнать, что делают разные теги (например, %s и %d ), что может оказаться весьма кстати.

Объединение строк в Bash с помощью awk

Немного менее известная команда - команда awk вызывает AWK - язык сценариев, специально разработанный для управления текстом и извлечения из него строк. Неудивительно, что язык сценариев, предназначенный для управления строками, также может объединять их:

 $ echo "$string1" "$string2" | awk '{printf "%s~%s\n",$1,$2}' 

Разберем команду выше. У нас есть два фрагмента, связанных друг с другом (отсюда и оператор цепочки | Мы отправляем обе переменные string1 и string2 качестве входных данных для команды awk .

Синтаксис команды awk : awk '{some_operation}' .

В нашем случае мы выполняем внутри себя операцию printf Мы называем переменные $1 и $2 ; они относятся к переменным, переданным в качестве аргументов от echo .

Чтобы показать вариант здесь, мы используем тильду ( ~ ), разделяющую теги формата. Таким образом, он дает следующий результат:

 Stuck~Together 

Объединение строк в Bash с помощью соединения

Теперь, когда планки подняты, давайте попробуем последний метод. Давайте попробуем сохранить наши строки в двух отдельных файлах, по одному столбцу в каждом. Файл string1.txt содержит слово "Stuck" написанное два раза в три строки. Как и раньше, string2.txt будет содержать слово "Together" написанное два раза в три строки, и следующие команды создают файлы для нас:

 $ echo "1 Stuck" > "string1.txt" 
 $ echo "2 Stuck" >> "string1.txt" 
 $ echo "1 Together" > "string2.txt" 
 $ echo "2 Together" >> "string2.txt" 

Оба файла можно объединить с помощью следующей команды:

 $ join string1.txt string2.txt 

Чтобы команда соединения работала, оба файла должны иметь соответствующий столбец. В нашем случае у нас есть соответствующий столбец индекса, и мы получаем объединенный вывод, как показано ниже:

 1 Stuck Together 
 2 Stuck Together 

Заключение

Существует несколько способов объединения строк в сценариях bash. Выбор метода зависит от уровня сложности и характера проблемы. Какой вы выберете?

comments powered by Disqus