Übersetzen newline zu comma
Ich habe eine Textdatei mit einer Liste von rund 150 bis 200 Datei-Namen
abc.txt
pqr.txt
xyz.txt
...
...
Brauche ich ein string mit Komma-getrennten Dateien.
Jede Zeichenfolge sollte nicht mehr als 20 Dateien. So ist das echo in etwa so Aussehen...
$string1="abc.txt,pqr.txt,xyz.txt..."
$string2="abc1.txt,pqr1.txt,xyz1.txt..."
...
Die Anzahl der strings wird unterschiedlich sein, je nach der Anzahl der Zeilen in der Datei. Ich habe geschrieben, so etwas wie dieses...
#!/bin/sh
delim=','
for gsfile in `cat filelist.txt`
do
filelist=$filelist$delim$gsfile
echo $filelist
done
Übersetzen-Befehl arbeitet wie erwartet, aber wie beschränke ich jeder Zeichenfolge, die 20 Dateinamen?
cat filelist.txt | tr '\n' ','
- Sie können ein Variablen-array und Schleife Trog Ihre Liste, überprüfen Sie, ob % 20 == 0, dann weisen Sie zur nächsten Variablen aus der variable array
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie einfach
xargs
:Einer Weise mit
sed
:Hinzufügen, wie Igor Chubin 50 zahlen zu
infile
:Inhalt
script.sed
:Ausführen wie:
Mit folgende Ausgabe:
Könnte dies für Sie arbeiten:
oder GNU sed:
Verwendung einer Flagge in der sed -
s
Befehl zum ersetzen jeder 20 Komma durch einen Zeilenumbruch: