Текстовые файлы Morge от CLI с порядком сортировки и корнем

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

Я задавался вопросом, существует ли путь, с помощью командной строки, для первого слияния всех txt файлов в алфавитном порядке и в то же время добавляют суффикс к исходной записи для замечания файла, из которого это прибыло.

Например, скажем, у меня есть 2 txt файла, каждый с тремя записями:

File_One:

  Alpha
  Bravo 
  Charlie

File_Two:

  Alpha
  Bravo
  Delta

То, что я хотел бы сделать, является этим:

  1. Объедините два списка в одном выводе txt файл, отсортированный в алфавитном порядке;
  2. Добавьте суффикс для показа, от которого списка он прибывает из:

       Alpha_File_One
       Alpha_File_Two
       Bravo_File_One
       Bravo_File_Two
       Charlie_File_One
       Delta_File_Two
    

Действительно ли это возможно?

1
задан 24 August 2018 в 05:00

2 ответа

Как Florian говорит, необходимо сначала добавить имя файла и затем вид. Другой метод должен использовать awk:

$ awk '{printf "%s_%s\n", $0, FILENAME}' f1 f2 | sort
Alpha_f1
Alpha_f2
Bravo_f1
Bravo_f2
Charlie_f1
Delta_f2

printf аргументы печати в указанном формате, %s_%s\n значение двух строк, разделенных _ и сопровождаемый новой строкой. $0 и FILENAME содержите текущую строку и имя файла соответственно. Я назвал файлы f1 и f2, в этом примере.

5
ответ дан 3 December 2019 в 06:25

Вы должны сделать это наоборот: Сначала добавьте суффикс, слияние логова и вид:

(sed 's/$/_File_One/' File_One; sed 's/$/_File_Two/' File_Two) | sort 
2
ответ дан 3 December 2019 в 06:25

Другие вопросы по тегам:

Похожие вопросы: