J’essaie de lire un fichier journal et de créer un nouveau fichier avec uniquement les entrées après la date et l’heure données. Par exemple, je cherche seulement après le temps 07: 00: 00.000 dans le journal ci-dessous:
2015-01-16 00:00:00.001 DATA 2015-01-16 07:05:00.121 DATA 2015-01-16 07:10:15:543 DATA
Irait à:
2015-01-16 07:05:00.121 DATA 2015-01-16 07:10:15:543 DATA
Je peux déjà faire fonctionner ceci avec:
sed -n '/^2015-01-16 07/,$p' oglog.log > newlog.log
Mais quand j’essaye d’append la date via une variable:
date=$(date -d -1hour +'%Y-%m-%d %H')
Je ne peux pas le faire fonctionner. Je sais que vous devez faire en sorte que le shell développe des variables via des guillemets simples ou doubles ( https://askubuntu.com/questions/76808/how-to-use-variables-in-sed-command ), mais avec l’un ou l’autre méthodes, il provoque des problèmes avec $p
dans la partie remplacement de la commande sed. Comment puis-je obtenir le shell pour développer une variable mais pas l’autre et utiliser une commande similaire à celle ci-dessous?
sed -n '/^$date/,$p' oglog.log > newlog.log
sed -n "/^$date/"',$p' oglog.log > newlog.log
Vous voulez que le $date
développé par le shell, donc il doit être entre guillemets. Vous ne voulez pas que le $p
développé par le shell, donc il doit être entre guillemets simples. Vous pouvez également utiliser une barre oblique inverse pour empêcher le shell d’étendre ce $p
, mais cela devient rapidement désagréable si vous avez d’autres barres obliques inverses significatives dans le regex:
sed -n "/^$date/,\$p" oglog.log > newlog.log
Utilisation
sed -n "/^$date/,\$p" oglog.log > newlog.log
les variables ne sont pas développées entre guillemets simples.
“Double quote” chaque littéral contenant des espaces / métacaractères et chaque extension: "$var"
, "$(command "$var")"
, "${array[@]}"
, "a & b"
. Utilisez 'single quotes'
pour le code ou le littéral $'s: 'Costs $5 US'
, ssh host 'echo "$HOSTNAME"'
. Voir
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words