Предполагая, что будет отсутствовать только фамилия (, а не имя ), и что слова в файле не содержат пробелов (, что сделало бы его чрезвычайно сложно ), сначала внесите данные во вкладку -в формате с разделителями, заменив отсутствующие фамилии пустыми полями:
$ awk -v OFS='\t' 'NF == 3 { $1 = $1 } NF == 2 { $3 = $2; $2 = "" } { print }' <file
peter barker painter
carl baker cook
joshua carpenter
Скрипт awk
обнаружит строки, содержащие два или три поля. Он просто переформатирует строки, которые уже содержат три поля, в три поля с разделителями табуляцией -, перемещая второе поле в третье поле для строк, которые изначально содержали только два поля.
Затем отсортируйте данные с помощью табуляции в качестве разделителей:
$ awk -v OFS='\t' 'NF == 3 { $1 = $1 } NF == 2 { $3 = $2; $2 = "" } { print }' <file | sort -t $'\t' -k1,2 -k3
carl baker cook
joshua carpenter
peter barker painter
Здесь выполняется сортировка по полному имени (, по полям один и два ), а затем по роду занятий. Предполагается, что вы используете оболочку типа bash
, которая понимает $'\t'
как символ табуляции.
Вместо табуляции можно использовать любой другой символ, не мешающий данным (здесь:
):
$ awk -v OFS=':' 'NF == 3 { $1 = $1 } NF == 2 { $3 = $2; $2 = "" } { print }' <file | sort -t ':' -k1,2 -k3
carl:baker:cook
joshua::carpenter
peter:barker:painter
Затем замените выбранный символ-разделитель, пропустив результат черезtr
(здесь заменив табуляции, потому что это выглядит красиво):
$ awk -v OFS=':' 'NF == 3 { $1 = $1 } NF == 2 { $3 = $2; $2 = "" } { print }' <file | sort -t ':' -k1,2 -k3 | tr ':' '\t'
carl baker cook
joshua carpenter
peter barker painter
Извлеките все диски из дисковода CD/DVD.
Откройте терминал и введите:
wodim -prcap
Вы должны получить результаты, подобные:
Maximum read speed: 8468 kB/s (CD 48x, DVD 6x)
Current read speed: 8468 kB/s (CD 48x, DVD 6x)
Maximum write speed: 8468 kB/s (CD 48x, DVD 6x)
Current write speed: 8468 kB/s (CD 48x, DVD 6x)
Вы также можете использовать:
cdrecord -prcap