Да, вы можете использовать sed для замены строк:
$ sed -E 'N;N;s/\n([^\n]*)\n([^\n]*)/ \2 \1/' file
Object Name: A manual_encdomain: Name: A comments: comment A
Object Name: B manual_encdomain: Name: B comments: comment B
Или, что то же самое:
$ sed 'N;N;s/\n\([^\n]*\)\n\([^\n]*\)/ \2 \1/g' file
Object Name: A manual_encdomain: Name: A comments: comment A
Object Name: B manual_encdomain: Name: B comments: comment B
-E
Это включает расширенные регулярные выражения.(-E
работает как на BSD (OSX )sed, так и на современной GNU sed. Для более старых версий GNU sed вместо этого используйте -r
.)
Без расширенного регулярного выражения нам нужно экранировать (
и )
, как показано выше.
N;N
Это читается во второй и третьей строках.
s/\n([^\n]*)\n([^\n]*)/ \2 \1/
Это поменяет местами вторую и третью строки. Первое вхождение \n([^\n]*)
захватывает вторую строку и сохраняет ее в группе захвата 1. Второе вхождение \n([^\n]*)
захватывает третью строку и сохраняет ее в группе захвата 2. Текст замены \2 \1
меняет позицию при замене новые строки с пробелами.
Во входном файле вторая и третья строки имеют отступ. Если мы хотим удалить эти лишние пробелы:
$ sed -E 'N;N;s/\n[[:blank:]]*([^\n]*)\n[[:blank:]]*([^\n]*)/ \2 \1/g' file
Object Name: A manual_encdomain: Name: A comments: comment A
Object Name: B manual_encdomain: Name: B comments: comment B
[[:blank:]]
— это безопасный для Unicode -способ сопоставления пробелов и табуляций.
Запустите composer require parsecsv/php-parsecsv
, как указано выше. Если у вас нет композитора, он есть в CentOS в виде пакета :yum install composer