[Linux] sed grep ou awk - remplace ment de chaine de caracteres

Marc Chantreux mc@::1
Lun 21 Oct 16:24:06 CEST 2024


hello,

* tu mélanges les interpolations de variable et les colonnes.
* tu fais des trucs dangereux sans le savoir

mais là c'est long donc on en reparle de vive voix devant un verre?

en tout cas:
maintenant que je vois un script presque final, voilà ma proposition:

#!/bin/sh -ue

while getopts h0:1:t: o; do
	case "$o"
	in (h) <<-% cat
		enable Terek4
		$0 -1 Terek4 config.yml
		disable Terek4
		$0 -2 Terek4 config.yml
		toggle Terek4
		$0 -t Terek4 config.yml
		(not implemented yet)
	%
	;; (0) set=false ; camera="$OPTARG"
	;; (1) set=true  ; camera="$OPTARG"
	;; (t)
		>&2 echo toggle not implemented yet
		exit 1
		# set=toggle; camera="$OPTARG"
	esac
done
shift $(( $OPTIND - 1 ))
real=${1?path to the config file}
ghost=$(mktemp)

< "$real" > $ghost awk -F: -vcamera="^ *$camera *$" -vkey=1 -vvalue=2 -vset=$set '
	$key ~ camera { search=1 }
	search && $key ~ /^ *enabled *$/ {
		$value = " "set
		search=0
	}
	1
'
mv $ghost "$real"


-- 
Marc Chantreux
Pôle CESAR (Calcul et services avancés à la recherche)
Université de Strasbourg
14 rue René Descartes,
BP 80010, 67084 STRASBOURG CEDEX
03.68.85.60.79



Plus d'informations sur la liste de diffusion linux