У меня есть серия txt файлов, каждого с многочисленными записями. Я обычно объединяю все txt файлы в один выходной файл с помощью кошки, однако это становится немного грязным, потому что я не могу быть уверен, от которого исходного txt файла это прибыло из.
Я задавался вопросом, существует ли путь, с помощью командной строки, для первого слияния всех txt файлов в алфавитном порядке и в то же время добавляют суффикс к исходной записи для замечания файла, из которого это прибыло.
Например, скажем, у меня есть 2 txt файла, каждый с тремя записями:
File_One:
Alpha
Bravo
Charlie
File_Two:
Alpha
Bravo
Delta
То, что я хотел бы сделать, является этим:
Добавьте суффикс для показа, от которого списка он прибывает из:
Alpha_File_One
Alpha_File_Two
Bravo_File_One
Bravo_File_Two
Charlie_File_One
Delta_File_Two
Действительно ли это возможно?
Как 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
, в этом примере.
Вы должны сделать это наоборот: Сначала добавьте суффикс, слияние логова и вид:
(sed 's/$/_File_One/' File_One; sed 's/$/_File_Two/' File_Two) | sort