Вы Вы можете использовать приложение Disk Utility в Linux для запуска теста SMART, который может определить состояние жесткого диска.
$cat mainfile
My name is hello world
My Name is not hello world
Вbash
#!/bin/bash
cat mainfile | while IFS= read line ;do
name=$(echo ${line} | awk '{print $4}')
echo "${line}" >> ${name}
done
Вcsh
#!/bin/csh
foreach line ( "`cat mainfile`" )
set name = `echo ${line} | awk '{print $4}'`
echo "${line}" >> $name
end
Чтобы создать файлы для всех слов в основном файле
#!/bin/bash
cat mainfile | while IFS= read line ;do
for word in $line; do
echo "${line}" >> ${word}
done
done
Строки файла должны быть записаны в файлы, имена которых берутся из четвертого поля, разделенного пробелом -. Слово «запись» относится к строке. Слово «столбец» иногда используется вместо «поля», и здесь можно было бы использовать слово «слово» вместо «поле». И «запись», и «поле» являются более общими, чем «строка» и «столбец» (или «слово» ). В частности, строка представляет собой запись, разделенную новой строкой -, а «поле» часто представляет собой столбец или слово, разделенное пробелами -, внутри записи.
Сawk
:
awk '{ print >$4 }' <file.txt
Это запустит оператор print
один раз для каждой строки входного файла file.txt
. >$4
означает, что вывод перенаправляется в файл, имя которого указано в четвертом поле строки. Для первой строки создается файл hello
, а для второй строки — файл not
.
$ cat hello
My name is hello world
$ cat not
My Name is not hello world
Если бы в файле присутствовали дополнительные строки, каждая строка была бы записана в файлы, заданные ее четвертым словом. Если в двух строках есть одно и то же четвертое слово, обе строки будут записаны в один и тот же файл.
Если в строке менее четырех слов, это вызовет ошибку.
awk
использует новые строки в качестве разделителя записей по умолчанию, а пробелы (вкладки или пробелы )в качестве разделителей полей, если не указано иное.
Расширенныйawk
-ness:
При выполнении такого рода перенаправления в программе awk
awk
будет держать файлы открытыми до выхода после считывания всех данных. Для каждого открытого файла требуется один файловый дескриптор, и их количество ограничено. Если необходимо записать много файлов , рекомендуется явно закрыть файлы:
awk '{ print >>$4; close($4) }' <file.txt
Здесь мы открываем вывод для добавления к (вместо усечения и перезаписи ), записываем текущую строку в файл и закрываем файл.Когда тот же файл открывается для вывода во второй раз (, поскольку четвертое поле оказывается одинаковым для двух или более строк ), данные добавляются. Если бы мы использовали >$4
, новые данные перезаписали бы старые. Это не проблема в первой программе вверху, поскольку мы никогда явно не закрываем файлы.
Сценарий (или что-либо еще, вызывающее awk
программу ), должны были сделать так, чтобы выходные файлы были пустыми или -несуществующими, прежде чем запускать это, в зависимости от обстоятельств.
Удаление файлов hello
и not
и трехкратный запуск вышеуказанной команды:
$ rm hello not
$ awk '{ print >>$4; close($4) }' <file.txt
$ awk '{ print >>$4; close($4) }' <file.txt
$ awk '{ print >>$4; close($4) }' <file.txt
$ cat hello
My name is hello world
My name is hello world
My name is hello world
$ cat not
My Name is not hello world
My Name is not hello world
My Name is not hello world