Используя то, что у вас есть на данный момент, и если make-файл создается с помощью автоинструментов GNU, я бы установил целевое местоположение или путь установкис помощью
./configure --prefix=/somewhere/else/ чем/the/usual/usr/local
, затем запустите
make && make install
и, наконец, скопируйте файлы из префиксной папки в папку usr/
на другом компьютере. Предполагается, что обе машины имеют одинаковую архитектуру, если нет, то используйте соответствующую кросс-инструментальную цепочку.
Другой способ с AWK
:
awk '{$1=$1;printf("%s ",$0)};NR%2==0{print ""}' FILE.txt
OUT:
LIN This is the value which I need from this line which has a very long line
SHR This1;This2; This3;
GYC This is an extra.
$1=$1
: удалить пробел в начале строкиprintf("%s ",$0)
удалить \n
( новая строка
) с конца строкиNR%2==0{print ""}
print \n
( новая строка
) для четных строк (например: 2,4,6,...)Не усложняйте:
sed 'H;1h;$!d;g;s/\n */ /g'
Этот короткий скрипт соединится все строки, начинающиеся хотя бы с одного пробела в предыдущей строке.
Как это работает: H
добавляет каждую строку в пробел. Чтобы избежать новой строки в начале, первая строка копируется с помощью 1h
. Если это была не последняя строка, d
удалите ее, в противном случае переместите пробел в пространство шаблона с помощью g
. Теперь весь файл находится в пространстве шаблона, и теперь команда s
заменяет все символы новой строки пробелами на один пробел.
С помощью GNU sed
вы можете сделать это еще проще:
sed -z 's/\n */ /g'
/^[A-Z]/ { if (line) { print line }; line = $0 }
/^ / { sub(/ /, "") ; line = line $0 }
END { if (line) { print line } }
Этот awk
скрипт создаст
LIN This is the value which I need from this line which has a very long line
SHR This1;This2;This3;
GYC This is an extra.
учитывая данные, представленные в вопросе в file.in
.
Первый блок будет выполняться для каждой строки, которая начинается с символа ASCII в верхнем регистре. Он выведет содержимое line
, если в нем что-то есть, а затем сохранит текущую строку ввода в line
. Это заботится о выводе построенной строки для предыдущего входного «блока» и начинает сборку следующей выходной строки.
Второй блок будет выполняться для каждой строки, в начале которой есть хотя бы один пробел, и удалит первые пять пробелов, прежде чем добавить их в конец line
. Это строит выходную строку из строк продолжения на входе.
Блок END
выводит сохраненный line
, если в нем что-то есть. Это заботится о выводе собранной строки из последнего «блока» ввода.
Вы запускаете это с
$ awk -f script.awk file.in
Этот скрипт обрабатывает случаи, когда может быть несколько строк с отступом (продолженных ).