Использование Python:
Вот действительно простой метод, который использует pandas.read_csv
для объединения ваших файлов TXT и вывода в один файл TXT, используя pandas.DataFrame.to_csv
.
import pandas as pd
from glob import glob
df = pd.DataFrame()
files = glob('./addr_files/*.txt')
for f in files:
df = df.append(pd.read_csv(f, skiprows=1, skipfooter=1, engine='python'))
df.to_csv('./addr_files/output.txt', index=False)
Вывод:
(py35) ~/Desktop/so/addr_files
$ cat output.txt
Name,address,zipcode
Rick,ABC,123
Tom,XYZ,456
Jerry,ABC,123
Harry,XYZ,456
John,ABC,123
Mike,XYZ,456
Использование GNU sed
:
Вот еще одна опция, которая будет транслировать вывод каждого файла с именем file*.txt
в новый файл (all.txt
), пропуская строки, которые вы хотите пропустить; в частности, 1-й, 2-й и последний.
Учитывая, что ваши файлы настолько велики, вы можете добавить пару операторов printf
для отладки, чтобы вы могли видеть, какой файл обрабатывается во время цикла сценария. файлы.
#!/usr/bin/env bash
# Print the header to the output file.
sed -n 2p file1.txt > all.txt
# Stream (specific) content of all files to output file.
for f in $( ls file*.txt ); do sed '1d;2d;$d' $f >> all.txt; done
Вывод:
(base) user@host ~/Desktop/so/concat
$ cat all.txt
Name,address,zipcode
Rick,ABC,123
Tom,XYZ,456
Jerry,ABC,123
Harry,XYZ,456
John,ABC,123
Mike,XYZ,456