Объединение двух значений столбца в файл

У меня есть файл с (только с одной строкой) с несколькими столбцами, скажем, 4 (в данном случае):

ABCD 

И я хочу, чтобы результат был как всевозможная комбинация значений столбцов, принимающих 2 за раз, например:

 AB AC AD BC BD CD 

где AB и BA эквивалентны. Я пробовал код: sed 's! \([^ ]\+\)\( \|$\)!\1 !g' <file_name> sed 's! \([^ ]\+\)\( \|$\)!\1 !g' <file_name> но он дает результат как AB CD .

Пожалуйста, предложите, как это сделать, используя awk или любую команду оболочки.

One Solution collect form web for “Объединение двух значений столбца в файл”

С awk :

 awk '{for(i=1;i<=NF;i++){for(j=i+1;j<=NF;j++){print $i$j;}}}' file 

Это два вложенных цикла:

  • for(i=1;i<=NF;i++) цикл через все поля
    • for(j=i+1;j<=NF;j++) то для каждого поля цикл через все остальные поля (начинаться с i+1 )
    • print $i$j печатает оба значения поля.

Выход:

 AB AC AD BC BD CD 
  • Удалить диапазон строк над шаблоном с помощью sed (или awk)
  • Замена текста из списка замен. Добавлено осложнение: обратная косая черта
  • Извлечь строки из текстового файла на основе параметра в одну строку
  • Сравните два столбца файла
  • Добавьте строку под каждой строкой, соответствующей шаблону, только если она уже отсутствует
  • Захват в переменных оболочки аргументов после команды (между скобками)
  • удалить соответствующую фразу из начала файла списка и записать изменения
  • Не запускать этот sed при сопоставлении строки?
  • Как написать сценарий sed для удаления чисел из строки?
  • Удалите определенные объекты из плоской базы данных файлов
  • Сохранять только столбец .csv, содержащий данные XYZ?
  • Код рефакторинга с использованием sed
  • Linux и Unix - лучшая ОС в мире.