#bash #for-loop #awk #sh
Вопрос:
У меня есть много .txt
файлов, которые содержат много строк с одним столбцом данных. Однако длина файлов не одинакова. Некоторые файлы содержат 2000 строк, другие-2001 строк и т. Д.
Иногда в конце есть одна пустая строка, которую я хочу удалить.
Я хочу добавить строки 0 в конец всех файлов, кроме самого длинного, чтобы номера строк всех файлов были одинаковыми.
Я бы хотел, чтобы это было решено с помощью простого сценария оболочки.
Комментарии:
1. Вы хотите добавить пустую строку во все файлы, содержащие только 2000 строк?
Ответ №1:
Сначала вы должны найти файл с наибольшим количеством строк. После этого вы можете добавлять строки в другие файлы, пока в них не будет столько строк, сколько в файле с наибольшим количеством строк.
Здесь мы добавляем строки, содержащие текст 0
, пока в файле не будет столько строк, сколько в файле с наибольшим количеством строк.
Чтобы сначала удалить пустую строку в конце, вы можете использовать sed
:
sed -i '${/^$/d}' /home/kisa/data/*.txt
max=$(wc -l /home/kisa/data/*.txt | head -n-1 | sort -n | awk 'END {print $1}')
for f in /home/kisa/data/*.txt; do
n=$(wc -l < "$f")
yes 0 | head -n $((max-n)) >> "$f"
done