У меня есть текстовый файл, который содержит в каждой строке несколько слов, например:Сортировка каждая строка в текстовом файле
stackoverflow coding programming
tag question badges
я должен сортировать каждую строку и сохранить порядок строк. Например, для приведенного выше примера вывод должен быть:
coding programming stackoverflow
badges question tag
Мое решение до сих пор является создание временного файла, в котором сортируются все линии. Скрипт Баш выглядит следующим образом:
FILE_TMP=$FILE".tmp"
while read line
do
echo $line | xargs -n1 | sort | xargs >>$FILE_TMP
done < $FILE
mv $FILE_TMP $FILE
Он отлично работает, но я не доволен тем, что я должен создать дубликат файла, особенно потому, что файлы большие.
Итак, у меня вопрос, есть ли решение для сортировки каждой строки файла?
Спасибо,
Достаточно UNIXish способ сделать это - не создавать временный файл, а вместо этого отправлять вывод на stdout. Тогда ваш маленький скрипт ведет себя так же, как «сортировка» и другие утилиты, и все счастливы. (И вы не создаете временный файл, если вам нужно выполнить другую обработку и отправить результат через канал ...) – fog
Не удалось создать временную строку (массив символов), которая будет содержать содержимое строки (заканчивается символом конца строки), а затем сортировать их, а затем заменить текущую строку на новую отсортированную строку? Успех этого метода зависит от того, сможет ли u удалить конкретную строку из файла? Например, вы находитесь в строке # 1: - прочитайте его в строке >> sort it >> удалите строку # 1 из файла >> добавьте новую строку # 1 в файл >> перейдите к следующей строке и повторите. Если это возможно, вы можете избежать создания нового временного файла, если нет, то вам, возможно, придется прибегнуть к новому временному файлу. – Philo