PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell script für replacement



gordon2
03-09-2013, 18:49
Hallo,

ich möchte gerne aus einem Textfile Zeilen entfernen, die bestimmte Eigenschaften haben
(z.B. alle Zeilen mit weniger als 3 Zeichen sollen entfernt werden)

1) Die erste Idee war, dass ich "einfach"



sed -i 's@text @@g' file.txt


mache, also alle Zeilen lösche, die mehr als 3 Leerzeichen haben. Das funktioniert leider
nicht, da in der ersten Bedingung
@text @ keine Leerzeichen akzeptiert werden(?)

2) Nun verwende ich einen etwas aufwendigeren Code:



#!/bin/bash
j = 1
cat file.txt | while read line
do
j=$(( $j + 1 ))

count=$(echo $line | wc -c)
#if [ $count -eq 1 ] || [ $count -eq 2 ] || [ $count -eq 3 ];

if [ $count -eq 3 ];
then
sed -e $j'd' file.txt | tee out.txt
fi
done


Hier ist die Idee, den Textfile durchzugehen und alle Zeilen, die eine bestimmte Bedingung
erfüllen zu eleminieren.
Leider macht die Zeile


sed -e $j'd' PT-093A.txt | tee out.txt

Probleme. Ich denke mal, dass das nicht die richtige Form ist Strings zu einem Kommando zusammenzuführen.
Wenn jemand eine Lösung oder eine bessere Idee hat, dann würde ich mich freuen.

Vielen Dank!
gordon2

gordon2
04-09-2013, 10:51
Hallo,

ich habe eine Lösung gefunden, die mein Problem löst



awk 'length()>4' input.txt > output.txt


Die Beantwortung meiner vorherigen Frage ist nun
fakultativ..;-)

Grüße
gordon2