Страница 1 из 1

программисты на linux ....question

Добавлено: Вт фев 06, 2024 6:49 am
Nab
Эй, молодые программисты на linux имеют место здесь быть или где?

Короче, одна персона с хорошим педикюром почему-то спросила меня - как убрать трэйлинг спэйсес
внутри XML tag.
Например имеем следущую строку в XML file:
<FIRST NAME>Вася </FIRST NAME>
и ещё много других строк с другими тагами и трэйлинг спэйсами внутри тагов.
Надо получить
<FIRST NAME>Вася</FIRST NAME>


Вопрос - как в linux убрать эти трейлинг спейсы внутри тагов? Есть ли какая-то линукс команда или рутина. Про sed говорить не надо, нах

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 7:05 am
caltrain
Например, вызвать в командой строке
xsltproc transform.xsl input.xml > output.xml

В XSL использовать normalize-space()

Когда XSL файл будет готов, сделать так чтобы он подавался на вход процессора в виде строки

https://stackoverflow.com/questions/159 ... -xml-files

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 7:18 am
Nab
ok, конкретный пример XML file in input folder moving into OUTPUT с сапрессинг спейсес вне тагс.
INPUT_FOLDER=$1
OUTPUT_FOLDER=$2

echo "input folder: $INPUT_FOLDER"
echo "output folder: $OUTPUT_FOLDER"

#: '
for file in $INPUT_FOLDER/*.xml
do
echo "filename with path: $file"
filename=${file##*/}
echo "filename: $filename"
sed 's/[[:space:]]*$//' "$file" > "$OUTPUT_FOLDER/$filename"

done
#'


Какую линукс команду можно ввести что бы убрать трейлинг спейсы внутри тага?

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 7:56 am
Mad Hatter
Как уже сказал, sed.
Учи реджексы :) пригадицца

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 8:48 am
Nab
sed убирает трейлинг спейсес вне тагов.
Если есть идея, как убрать трейлинг спейсы внутри тага и конкретно с примером (или на примере) который я привёл - би май гест, азевайс - учи как читать поставленную задачу, нах

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 8:49 am
VikKur
как уже сказали sed...
но...любой "tool" на линуксе справится с задачей - perl/awk/ex...ksh/bash/sh наконец )
пс щас попробую
псс в вышепреведённом примере кривой regular expression и он цепляет всё

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 9:01 am
assassello
В самом простом случае нужно найти \s+(</) и заменить на $1.

Как-то так. Любой тул, который умеет regex find/replace подойдет.

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 9:33 am
VikKur
sed 's/\(>[^<]*\) \+\(<[^>]*>\)/\1\2/g' "$FILE" > "$OUTPUT"
input - <FIRST NAME>Vasya </FIRST NAME>
output <FIRST NAME>Vasya</FIRST NAME>
ps chatGPT помог ) хотя и отказался сделать это на ksh.ну и не надо

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 9:54 am
assassello
А почему не
sed 's/\s*\(<\/\)/\1/g' "$FILE" > "$OUTPUT"

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 10:03 am
VikKur
assassello писал(а): Вт фев 06, 2024 9:54 am А почему не
sed 's/\s*\(<\/\)/\1/g' "$FILE" > "$OUTPUT"
сработало тоже и вроде понятнее. chatGPT наверное туповат, а я мне лень возиться )

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 10:38 am
Uzito
Только если в XML будет [CDATA] который трогать нельзя оно его отформатирует тоже.

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 10:42 am
Mad Hatter
Кстати да. XML та ещё фигня.
Тогда уже Питоном ударить по DOMу 🤣

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 2:03 pm
self
Mad Hatter писал(а): Вт фев 06, 2024 10:42 am Кстати да. XML та ещё фигня.
Тогда уже Питоном ударить по DOMу 🤣
Самое правильное решение
Загрузить исходник любым парсером и тут же выгрузить обратно

Re: программисты на linux ....question

Добавлено: Вт фев 06, 2024 2:47 pm
VikKur
self писал(а): Вт фев 06, 2024 2:03 pm
Mad Hatter писал(а): Вт фев 06, 2024 10:42 am Кстати да. XML та ещё фигня.
Тогда уже Питоном ударить по DOMу 🤣
Самое правильное решение
Загрузить исходник любым парсером и тут же выгрузить обратно

Re: программисты на linux ....question

Добавлено: Ср фев 07, 2024 2:59 am
Nab
assassello писал(а): Вт фев 06, 2024 9:54 am А почему не
sed 's/\s*\(<\/\)/\1/g' "$FILE" > "$OUTPUT"
это сработало. Все довольны, нах. Спасибо

Re: программисты на linux ....question

Добавлено: Ср фев 14, 2024 1:53 pm
caltrain
мне уже третий день пишет тетка, которая в поле yaml хочет вставить JSON, но сам JSON в виде строки, а его полях еще SSH-ключ.

причем, ключ она не хочет прислать, делает все в vi, а когда не работает присылает не копипаст текста, а скриншоты.

а кому какое дело, может Вова - ....ас.

Re: программисты на linux ....question

Добавлено: Ср фев 14, 2024 2:22 pm
kyk
caltrain писал(а): Ср фев 14, 2024 1:53 pmмне уже третий день пишет тетка
имеет ли gender значение в программировании? А если бы транс писАл или таки Вова - ....ас.?