У меня есть две переменные, которые содержат многострочную информацию, и я хочу столбцы их.
varA
возвращается
Aug 01
Aug 04
Aug 16
Aug 26
и varB
возвращается
04:25
07:28
03:39
10:06
если я печатаю обе переменные, он возвращает
Aug01
Aug04
Aug16
Aug26
04:25
07:28
03:39
10:06
Я хочу сделать следующее:
Aug01 04:25
Aug04 07:28
Aug16 03:39
Aug26 10:06
Я новичок в использовании Linux, и я был бы признателен за некоторые советы.
command-line
bash
text-processing
BNairb
источник
источник
Ответы:
Встречайте
paste
, часть предустановленных основных утилит GNU :paste
принимает в качестве входных данных файлы, а не переменные, поэтому я использовалbash
Process Substitution и просто печатал содержимое переменной с помощьюprintf
. Разделитель по умолчанию между столбцамиTAB
, вы можете изменить его с помощью-d
опции, например,paste -d" "
для одного символа пробела. Чтобы узнать больше оpaste
, посмотрите в онлайн-руководство или запуститьinfo '(coreutils) paste invocation'
.источник
Если вы просто хотите отображать текстовые переменные рядом, у @dessert есть самое простое (лучшее?) Решение с использованием
print
. Однако, если вы хотите иметь возможность манипулировать каждой частью по отдельности, вы можете легко преобразовать переменные в массивы вместо этого и выполнить цикл.источник
Вы можете сделать это с помощью инструмента POSIX
pr
:Результат:
Или для одной вкладки:
Или для одного места:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pr.html
Или с
column
изutil-linux
пакета:источник
Если вы хотите избежать внешних утилит и сделать это непосредственно в оболочке, вы можете использовать
read
с отдельными дескрипторами файлов / здесь строки для каждой переменной:Хотя использование оболочки для обработки текста часто считается плохой практикой, это может быть оправдано в случае, если у вас уже есть данные в переменных оболочки.
источник