46
Vývoj / Re:Jak v bashi/awk/sedu vypsat text uvnitř tagu div /div ?
« kdy: 21. 07. 2023, 20:49:30 »zeptej se ho proc to lomitko v tagu escapuje 2x ;-)
Tak vygeneroval chyby kod a snažil jsem se to po něm opravit. To byla moje úprava.
Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.
zeptej se ho proc to lomitko v tagu escapuje 2x ;-)
menu=$(awk '/<div id="menu-slider">/,/<\\/div>/' temp.html | awk '/<nav id="menu"/,/<\\/nav>/')
echo "Menu:"
echo "$menu"
$./extract-webnode-menu-structured.sh
awk: cmd. line:1: /<div id="menu-slider">/,/<\\/div>/
awk: cmd. line:1: ^ unexpected newline or end of string
awk: cmd. line:1: /<nav id="menu"/,/<\\/nav>/
awk: cmd. line:1: ^ unexpected newline or end of st
# Funkce barevně vypíše aktivitu
declare -f mpstat_activity
mpstat_activity() {
local idle=$(mpstat | awk 'NF >= 1 {idle += $(NF)} END {print idle}')
local activity=$((100 - idle))
if ((activity < 10)); then
echo -e "\e[32m${activity}%\e[0m" # Zelená 32
elif ((activity < 12)); then
echo -e "\e[33m${activity}%\e[0m" # Žlutá; je špinavě žlutá
elif ((activity < 14)); then
echo -e "\e[33m${activity}%\e[0m" # Oranžová 33
else
echo -e "\e[31m${activity}%\e[0m" # Červená 31
fi
}
PS1='$(mpstat_activity) $ '
# Spustit po startu na pozadí
declare -f mp
mp() {
local duration=1800 # Délka trvání v sekundách (30 minut)
local interval1=240 # Interval prvních 9 minut (4 minuty)
local interval2=180 # Interval dalších 12 minut (3 minuty)
local interval3=90 # Interval po uplynutí toho času (1.5 minut)
local start_time=$(date +%s)
mpstat_activity # První volání
while true; do
local current_time=$(date +%s)
local elapsed_time=$((current_time - start_time))
if ((elapsed_time <= interval1)); then
sleep "$interval1"
elif ((elapsed_time <= interval1 + interval2)); then
sleep "$interval2"
elif ((elapsed_time <= duration)); then
sleep "$interval3"
else
break # Trvání skončilo, ukončení smyčky
fi
mpstat_activity
done
}
# Funkce pro ukončení
declare -f mp_exit
mp_exit() {
unset -f mp # Odstranění funkce `mp` ze zásobníku
echo "Monitoring procesoru ukončen."
}
# Přidání příkazů mp a mp_exit do .bashrc
alias mp='mp'
alias mp_exit='mp_exit'
mp &
iconv -f <původní-kódování> -t UTF-8 <vstupní-soubor> -o <výstupní-soubor>
output=$(echo "$input" | iconv -f UTF-8 -t UTF-8//TRANSLIT -c "$map_file")
echo "$output"
local input=$1
local output=""
local length=${#input}
for (( i = 0; i < length; i++ )); do
local char=${input:i:1}
local replacement=${replacements[$char]}
output+="${replacement:-$char}"
done
#!/bin/bash
# Název souboru
input_filename="puvodni_kod.html"
output_filename="novy_kod.html"
# Načtení obsahu souboru
file_content=$(cat "$input_filename")
# Řetězec s HTML tagy k odstranění
string_to_remove=$(< "tags_to_remove_from_code.txt")
# escapovat speciální znaky [ ] ( ) \ . * ? ^ $ " & +
escaped_string_to_remove=$(sed 's/[][()\\.*?^$"&+]/\\&/g' <<< "$string_to_remove")
if [[ $file_content =~ $escaped_string_to_remove ]]; then
echo "Výraz byl nalezen."
else
echo "Výraz nebyl nalezen."
exit
fi
echo "PRVNÍ VZOR: $escaped_string_to_remove"
# Odstranění řetězce ze souboru
# 2x slash // znamená, že se bude opakovat hledání na všechny
new_content="${file_content//$escaped_string_to_remove/}"
# #*</div></div></div> ... odstraň nejdelší shodujícího se vzor ze začátku řetězce
new_escaped_string_to_remove="${escaped_string_to_remove#*</div></div></div>}"
echo "DRUHÝ VZOR: $new_escaped_string_to_remove"
# Odstranění počátečního řetězce ze souboru
new_content="${new_content/$new_escaped_string_to_remove/}"
# Přepsání souboru s novým obsahem
echo "$new_content" > "$output_filename"
</div></div></div><span class="flex-grow flex-shrink-0" style="font-family: arial;"></span><div class="flex p-4 gap-4 text-base md:gap-6 md:max-w-2xl lg:max-w-[38rem] xl:max-w-3xl md:py-6 lg:px-0 m-auto"><div class="flex-shrink-0 flex flex-col relative items-end"><div class="w-[30px]"><div class="relative flex"><span style="background: none; border: 0px none; box-sizing: border-box; display: inline-block; font-family: arial; height: initial; margin: 0px; max-width: 100%; opacity: 1; overflow: hidden; padding: 0px; position: relative; width: initial;"><span style="background: none; border: 0px none; box-sizing: border-box; display: block; height: initial; margin: 0px; max-width: 100%; opacity: 1; padding: 0px; width: initial;"><img alt="" aria-hidden="true" src="data:image/a končí takto:.png&w=96&q=75" style="border: medium none; box-sizing: border-box; display: block; height: 0px; inset: 0px; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0px; position: absolute; width: 0px;" /></span></div></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex items-start overflow-x-auto whitespace-pre-wrap break-words flex-col gap-4"><div class="empty:hidden">#!/bin/bash
# Název souboru
input_filename="puvodni_kod.html"
output_filename="novy_kod.html"
# Načtení obsahu souboru
file_content=$(cat "$input_filename")
# Řetězec s HTML tagy ke odstranění
# Při načítání obsahu ze souboru pomocí $(< "$input_filename") nemusíte escapovat uvozovky v textu. Tento způsob načítání souboru v shell skriptu umožňuje zachovat původní formátování a speciální znaky v textu bez potřeby escapování. Stejně tak při načítání řetězce ke odstranění pomocí $(< "hledany_kod.txt") nemusíte escapovat uvozovky ani jiné speciální znaky, pokud jsou přítomny v textu v souboru "hledany_kod.txt".
string_to_remove=$(< "tags_to_remove_from_code.txt")
# Přesto nebyl nahrazen a chatGPT přesto píše že mám escapovat speciální znaky [ ] \ . * ^ $
escaped_search_pattern=$(sed 's/[][\\.*^$]/\\&/g' <<< "$search_pattern")
if [[ $file_content =~ $escaped_search_pattern ]]; then
echo "Výraz byl nalezen."
else
echo "Výraz nebyl nalezen."
exit
fi
# Odstranění řetězce ze souboru
# 2x slash // znamená, že se bude opakovat hledání na všechny
new_content="${file_content//$string_to_remove/}"
# #*</div></div></div> ... odstraň nejdelší shodujícího se vzoru ze začátku řetězce
string_to_remove="${string_to_remove#*</div></div></div>}"
# Odstranění počátečního řetězce ze souboru
new_content="${file_content/$string_to_remove/}"
# Přepsání souboru s novým obsahem
echo "$new_content" > "$output_filename"
$ ./remove-user-wrapper.sh
Výraz byl nalezen a provedla se záměna.