ResultDiff: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
No edit summary  | 
				 (→code)  | 
				||
| (8 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
* Set variables :  | * Set variables :  | ||
<pre>  | <pre>  | ||
export resultDiff=~/resultDiff  | #export resultDiff=~/resultDiff  | ||
export filesList=""  | |||
</pre>  | </pre>  | ||
* Execute :  | * Execute :  | ||
| Line 25: | Line 26: | ||
#filesList="$(ls -1d $1/*)"  | #filesList="$(ls -1d $1/*)"  | ||
[ -z "${resultDiff}" ] &&resultDiff="${OLDPWD}"  | [ -z "${resultDiff}" ] &&resultDiff="${OLDPWD}"  | ||
filesList="$(ls -1d   | [ -z "${filesList}" ] &&filesList="$(ls -1d .)"  | ||
# work dirs  | # work dirs  | ||
| Line 31: | Line 32: | ||
# cp files and unzip  | # cp files and unzip  | ||
echo "${filesList}" |while read fileName ;do  | #echo "${filesList}" |while read fileName ;do  | ||
   cp -p "${fileName}" /tmp/analyse$$/files/  | #  cp -p "${fileName}" /tmp/analyse$$/files/"$(echo "${fileName}" |tr '/' '-' )"  | ||
#done  | |||
count=1  | |||
echo "${filesList}" | while read fileName; do  | |||
  baseName="$(echo "${fileName}" | tr '/' '-')"  | |||
   cp -p "${fileName}" "/tmp/analyse$$/files/${count}-${baseName}"  | |||
  count=$((count + 1))  | |||
done  | done  | ||
gunzip /tmp/analyse$$/files/*.gz 2>/dev/null  | gunzip /tmp/analyse$$/files/*.gz 2>/dev/null  | ||
filesList="$(ls -1d /tmp/analyse$$/files/*)"  | filesList="$(ls -1d /tmp/analyse$$/files/*)"  | ||
| Line 52: | Line 60: | ||
# replace vars  | # replace vars  | ||
cp -a /tmp/analyse$$/files /tmp/analyse$$/files.cache  | cp -a /tmp/analyse$$/files /tmp/analyse$$/files.cache  | ||
cat /tmp/analyse$$/statWords.vars |while read lineMy ;do sed -i "s#\b${lineMy}\b#\${varMy}#g" /tmp/analyse$$/files.cache/* ;done 2>/dev/null  | cat /tmp/analyse$$/statWords.vars 2>/dev/null |while read lineMy ;do sed -i "s#\b${lineMy}\b#\${varMy}#g" /tmp/analyse$$/files.cache/* ;done 2>/dev/null  | ||
# comm = /tmp/analyse$$/comm  | # comm = /tmp/analyse$$/comm  | ||
Latest revision as of 11:06, 20 May 2025
AUTOMATED
- Set variables :
 
#export resultDiff=~/resultDiff export filesList=""
- Execute :
 
mkdir -p ~/old &&\
curl https://infocepo.com/wiki/index.php/Special:Export/ResultDiff 2>/dev/null |tac |sed -r '0,/'"#"'24cc42#/d' |tac |sed -r '0,/'"#"'24cc42#/d' |sed 's/'"&"'amp;/\&/g;s/'"&"'gt;/>/g;s/'"&"'lt;/</g' >~/old/$$ &&\
bash ~/old/$$
code
#24cc42#
#https://github.com/ynotopec/diff-multi
#[ $# -lt 1 ] &&exit
# initialisation des variables
baseDir="$(realpath "$(dirname $0)"/..)"
cacheFile=/tmp/"$(basename $0)"$$
########### commun algo
rm -rf /tmp/analyse*
#filesList="$(ls -1d $1/*)"
[ -z "${resultDiff}" ] &&resultDiff="${OLDPWD}"
[ -z "${filesList}" ] &&filesList="$(ls -1d .)"
# work dirs
mkdir -p /tmp/analyse$$/files /tmp/analyse$$/diff
# cp files and unzip
#echo "${filesList}" |while read fileName ;do
#  cp -p "${fileName}" /tmp/analyse$$/files/"$(echo "${fileName}" |tr '/' '-' )"
#done
count=1
echo "${filesList}" | while read fileName; do
  baseName="$(echo "${fileName}" | tr '/' '-')"
  cp -p "${fileName}" "/tmp/analyse$$/files/${count}-${baseName}"
  count=$((count + 1))
done
gunzip /tmp/analyse$$/files/*.gz 2>/dev/null
filesList="$(ls -1d /tmp/analyse$$/files/*)"
## find words
# stat words
echo "${filesList}" |while read fileName ;do
  cat "${fileName}" \
    |tr -c "[:alnum:]_" "[\n*]" |grep -v "^\s*$" |sort -u
done \
  >/tmp/analyse$$/statWords
triggerValue=$(($(ls -1d /tmp/analyse$$/files/* |wc -l) / 2))
# keep vars words
#awk 'NR == FNR {count[$0]++; next}; count[$0] <= '"${triggerValue}" /tmp/analyse$$/statWords /tmp/analyse$$/statWords |sort -u >/tmp/analyse$$/statWords.vars
# replace vars
cp -a /tmp/analyse$$/files /tmp/analyse$$/files.cache
cat /tmp/analyse$$/statWords.vars 2>/dev/null |while read lineMy ;do sed -i "s#\b${lineMy}\b#\${varMy}#g" /tmp/analyse$$/files.cache/* ;done 2>/dev/null
# comm = /tmp/analyse$$/comm
ls -1d /tmp/analyse$$/files.cache/* |while read fileName ;do
  cat "${fileName}" \
    |awk '!seen[$0]++'
done \
  >/tmp/analyse$$/comm
awk 'NR == FNR {count[$0]++; next}; count[$0] > '"${triggerValue}" /tmp/analyse$$/comm /tmp/analyse$$/comm \
  |awk '!seen[$0]++' >/tmp/analyse$$/comm2
mv -f /tmp/analyse$$/comm2 /tmp/analyse$$/comm
# diff = /tmp/analyse$$/diff/
ls -1d /tmp/analyse$$/files.cache/* |while read fileName ;do
  ( echo "== $(basename "${fileName}") =="
    cat "${fileName}"
    echo "=== missing ==="
    cat /tmp/analyse$$/comm
  ) >/tmp/analyse$$/tmp
  awk 'NR == FNR {count[$0]++; next}; count[$0] == 1' /tmp/analyse$$/tmp /tmp/analyse$$/tmp \
    |tee /tmp/analyse$$/diff/"$(basename "${fileName}")"
done
# libère cache
rm -f /tmp/"$(basename $0)"$$*
#24cc42#
Summary from ChatGPT
This is a shell script written in Bash. The script starts by setting the "resultDiff" variable to a specific file path. The script then performs the following actions:
- Creates a directory called "old" in the home directory.
 - Changes the current working directory to the "old" directory.
 - Downloads a file from "https://infocepo.com/wiki/index.php/Special:Export/ResultDiff", filters the data, and saves it to a temporary file.
 - Runs the temporary file.
 - Returns to the previous working directory.
 
The second part of the code is a more complex shell script that performs multiple actions related to file analysis and comparison. The script does the following:
- Cleans up previous temporary files.
 - Makes two directories, "analyse$$/files" and "analyse$$/diff".
 - Copies all files from the "resultDiff" directory to the "analyse$$/files" directory, and unzips any ".gz" files.
 - Generates a list of unique words from all the files in the "analyse$$/files" directory.
 - Triggers an action if the number of files is above a certain value.
 - Replaces the words in the list with a placeholder, "varMy".
 - Compares the contents of all files in the "analyse$$/files" directory and creates a new file, "analyse$$/comm", with all common lines.
 - Filters out the lines in "analyse$$/comm" that are not present in more than half of the files.
 - Generates a "diff" file for each file in the "analyse$$/files" directory, showing the contents of the file and the missing common lines.
 - Cleans up temporary files.