Получить определенную строку из определенной точки строки [закрыто]

Cuando comparte un descriptor de archivo a través de un socket, el núcleo actúa como mediador. Debe preparar los datos usando las cmsg(3)macros , enviarlos usandosendmsg(2)y recibirlos usandorecvmsg(2). El kernel está involucrado en las últimas dos operaciones y maneja la conversión de un descriptor de archivo a cualquier dato que necesite para transmitir el descriptor de archivo y hacer que el descriptor de archivo esté disponible en el proceso de recepción.

¿Cómo puede el mismo fd en diferentes procesos apuntar al mismo archivo? proporciona antecedentes útiles. El proceso de envío envía un descriptor de archivo que significa algo en relación con su (tabla privada )de descriptor de archivo; el kernel sabe a qué se asigna eso en la tabla de archivos abiertos del sistema -y crea una nueva entrada según sea necesario en la tabla de descriptores de archivos del proceso de recepción.

-5
21.05.2019, 11:40
1 ответ

Передайте ввод через

sed 's/][^[]*\[/,/g;s/\([^,]*,\)\{3\}//;s/  *,/,/;s/]$//'
  • s/][^[]*\[/,/gделает большую часть работы, удаляя все между []и разделяя их запятой
  • s/\([^,]*,\)\{3\}//избавляется от первых неиспользуемых полей
  • s/ *,/,/удаляет устаревшие пробелы
  • s/]$//'окончательно удаляет последний]

Обновление:Ваш комментарий предполагает, что количество и порядок полей могут быть разными в каждой строке. В этом случае более общий подход заключается в добавлении имен полей к каждой строке и цикле для извлечения соответствующих полей :

.
sed -e 'G;s/$/,Consumer Number,UCID,Sending Time,Receive Time,Total Time,STAN is,/;:loop' -e 's/ \(.*\) \[\([^] ]*\)\(.*\n.*,\)\1,/\3\2,/;tloop' -e 's/.*\n,//;s/,$//'

Я могу дать более подробное объяснение, если это действительно то, что вы ищете.

1
28.01.2020, 05:20

Теги

Похожие вопросы