Ich bin garde dabei n bash-skript zu schreiben. Der ist der aktuelle Stand ist, dass ausgegeben wird:
(oder mehr/weniger zeilen, oder mehr/weniger "," pro Zeile)Code:, , , , , ,
wie mache ich am besten daraus: ?
Code:0 1 2 3 4 5
Ich bin garde dabei n bash-skript zu schreiben. Der ist der aktuelle Stand ist, dass ausgegeben wird:
(oder mehr/weniger zeilen, oder mehr/weniger "," pro Zeile)Code:, , , , , ,
wie mache ich am besten daraus: ?
Code:0 1 2 3 4 5
Nichts für ungut, aber was soll das heißen?
Wenn ich die Kommatas zählen will, würde ich das so machen:Der ist der aktuelle Stand ist, dass ausgegeben wird:
Code:count=0 for i in $(cat /file_mit_kommatas) ; do count=$((++count)) done
ich will aber nicht die kommatas zählen, ich will jedes komma mit einer Zahl ersetzen. es soll also das 1. Komma mit 0 ersetzt werden, das 2. mit 1, das 3. mit 2 usw. dabei soll auch die Struktur der Zeilenumbrüche erhlten bleiben.
Die Ausgabe soll also so aussehen, wie in meiner Frage unten gezeigt.
Ich habe leider auch keine Idee, wie man diese Funktion benennen könnte, um nach ihr zu googlen.
Hallo
Man könnte es so machen das du einen counter erzeugst den Text in eine Variable kopieren. Mit grep die komma's zählst auch in einer Variable speichern und das ganze in eine for Schleife stecken.
for ((i=0;i<kommas;i++))
do
echo -e "$text" | sed "s/,/$count/"
done
MfG
klaus_harrer
ich habe es geschafft.
skript:
Code:#!/bin/bash lines=$(cat input | wc -l) zeile=1 wert=0 for ((d=0;d<lines;d++)) do text=$(cat input | sed -n "$(echo $zeile)p") zeile=$((++zeile)) count=0 for i in $text do count=$((++count)) done tt=$text for ((i=0;i<count;i++)) do stelle=1 tt=$(echo -e "$tt" | sed "s/,/$wert/$stelle") stelle=$((++stelle)) wert=$((++wert)) done echo $tt >> output done
und die input und output sind so wie im ausgangspst geschrieben.
Die Variablen zeile und stelle kannst du weglassen und stattdessen das schreiben
So hast du immerhin 4 Zeilen Code gespartCode:text=$(cat input | sed -n "$(echo $((d + 1)))p") ... tt=$(echo -e "$tt" | sed "s/,/$wert/$((i + 1))")
Lesezeichen