2010-03-25 4 views
2

donné un fichier texte brut, comment puis-je faire, en utilisant bash, awk, sed, etc, à, à la ligne numéro NLINE, ajouter la chaîne STR, juste n espaces après la fin de la ligne?Modifier un numéro de ligne exacte d'un fichier texte et ajouter une certaine chaîne après la fin de la ligne

Ainsi, par exemple, si cela est la ligne nLigne:

date march 13th 

pour 5 places, nous obtenons

date march 13th  STR 

et on obtient la modification dans un nouveau fichier.

Merci

+0

http://sed.sourceforge.net/sed1line.txt peut être utile –

Répondre

3
NLINE=2 
s="somestring" 
sp="  " 
awk -vn="$NLINE" -vs="$s" -vsp="$sp" 'NR==n{$0=$0 sp s}1' file >temp 
mv temp file 
+0

+1 pour le traitement correctement à l'intérieur des guillemets doubles 's'. Vous pouvez bien sûr aussi utiliser 'sprintf ("% "nsp" s "," ")' pour synthétiser par programmation 'sp' à partir d'un * nombre * d'espaces' nsp' comme l'indique l'OP, même si je suis d'accord que c'est trop OP sait d'avance combien d'espaces. – vladr

2
$ NLINE=666 
$ APPEND=" xxx" 
$ sed "${NLINE}s/\$/${APPEND}/" FILENAME 

Faites juste attention que APPEND ne contient pas de caractères sed pourrait interpréter.

0
#!/bin/bash 
NLINE=10 
n=5 
string="STR" 
while read -r line 
do 
    if ((++count == NLINE)) 
    then 
     printf "%s%${n}s%2\n" "$line" " " "$string" 
    else 
     echo "$line" 
    fi 
done <inputfile> outputfile 
Questions connexes