Можно считать строку в использование массива read -a
, и затем проверьте размер массива. Это должно быть значительно лучше, чем порождение подоболочки для разветвления 3 процессов каждая строка.
while read -ra line;
do
if (( ${#line[@]} != 31 )); then
echo "$file bad"
fi
done < "$file"
Вы уже перенаправили вывод file1
и file2
в новый файл file3
.
с этой командой CAT File1 File2> File3 | Сортировка
, Сортировка
после трубы.
Это может быть проверено, как показано ниже.
cat file1
A
Z
B
cat file2
F
G
C
Теперь, когда я запускаю команду как CAT File1 File2> File3 | Сортировка
Мы могли видеть, что содержимое File1
и файл2
записывается в file3
, но он не отсортирован.
Я верю, что вы пытаетесь достичь, могут быть довольно легко достигнуты как
cat file1 file2 | sort > file3
Однако он не показывает вывод в окне консоли.
Если вам нужен выход двух файлов после отсортированного для записи в новый файл, и в то же время отсортированный выход для доступов в консоли, вы можете сделать что-то вроде ниже.
cat file1 file2 | sort > file3; cat file3
Однако полезно использовать TEE
в этом случае. TEE
может быть эффективно использован, что и
cat file1 file2 | sort | tee file3
Вышеуказанная команда в основном объединяет 2 файла и сортирует их и отображает выходные данные в консоли, и в то же время записывает вывод трубы в новый файл, указанный с использованием Команда Tee
.
Как пользователь Casey отмечает, если у вас ZSH
Shell доступна в вашей системе, вы также можете использовать команду ниже.
sort <file1 <file2 | tee file3
POSIX определяет назначение утилиты sort
так:
Сортируйте строки всех именованных файлов вместе и запишите результат в указанный вывод.
Вы можете отсортировать два файла в единый выходной файл, например:
sort $opts file1 file2 >output_file
Если вы хотите, чтобы результат был сохранен в выходном файле stdout
и , то используйте tee
:
sort $opts file[12] | tee output_file