All text på en rad? [LÖST]
Postat: 26 sep 2009, 22:24
Hur gör man för att få all text på en rad istället för på många rader? Jag vill att all text i en textfil ska ligga på en enda rad och inte uppdelat på många rader. Hur gör jag?
Forum för Ubuntus svenska gemenskap
https://ubuntu-se.servebbs.org/
Kan du utveckla det lite. Skapar du textfilen i en editor eller i något program? Programspråk?ubot skrev:Hur gör man för att få all text på en rad istället för på många rader? Jag vill att all text i en textfil ska ligga på en enda rad och inte uppdelat på många rader. Hur gör jag?
Tanken var att ta koden från en webbsida med curl och lägga all kod på en enda rad och sedan plocka ut titel-taggarna med grep/sed. I Terminalen alltså.Urban Anjar skrev:Kan du utveckla det lite. Skapar du textfilen i en editor eller i något program? Programspråk?ubot skrev:Hur gör man för att få all text på en rad istället för på många rader? Jag vill att all text i en textfil ska ligga på en enda rad och inte uppdelat på många rader. Hur gör jag?
xargs vad? Jag har testat med xargs echo, men det fungerade inte så bra. Hur gör xargs texten till en enda rad?Konservburk skrev:Du kan t.ex. pipe:a det genom xargs. Funkar nog med sed också om du ändå tänker använda det. Och grep är förresten onödigt om du använder sed.
Kod: Markera allt
echo -n "hej"
Nja, alltså, jag tar ju texten från en textfil så jag väljer inte vad jag har att utgå ifrån. Jag har en text i en textfil där jag vill ha all text i en enda rad istället för på många rader.mcNisse skrev:Låt bli att skriva ut newline tecknen så är du hemma.
Det går utmärkt med echo. (Det gäller dock att hålla reda på vilken version av echo som körs)
Ibland fungerar dettaDet beror på skalet hellt enkelt.Kod: Markera allt
echo -n "hej"
Du har även tillgång till printf, oftast. Det beror lite på vilket språk du använder.
Jo, men när jag sedan tittar på koden i nano eller gedit så ligger den inte i en enda rad iaf. Jag har testat med ditt kommando, men utan framgång.gusse02 skrev:Kod: Markera allt
cat fil | tr -d '\n'
Det är samma sak med alla dessa kommandon, oavsett om det är tr, sed, awk, perl, xargs eller något annat. De ändrar inte på orginalfilen. Du kan om du vill spara resultatet någonstans och sedan ersätta orginalfilen. Men ska du ändå bara skicka vidare via en pipeline så är det ganska onödigt.ubot skrev:Jo, men när jag sedan tittar på koden i nano eller gedit så ligger den inte i en enda rad iaf. Jag har testat med ditt kommando, men utan framgång.
Men om jag har > filnamn.txt på slutet. Borde inte radändringarna följa med då, dvs bara en enda rad i textfilen som skapas?Konservburk skrev:Det är samma sak med alla dessa kommandon, oavsett om det är tr, sed, awk, perl, xargs eller något annat. De ändrar inte på orginalfilen. Du kan om du vill spara resultatet någonstans och sedan ersätta orginalfilen. Men ska du ändå bara skicka vidare via en pipeline så är det ganska onödigt.ubot skrev:Jo, men när jag sedan tittar på koden i nano eller gedit så ligger den inte i en enda rad iaf. Jag har testat med ditt kommando, men utan framgång.
Bara om du inte läser från filnamn.txt samtidigt.ubot skrev:Men om jag har > filnamn.txt på slutet. Borde inte radändringarna följa med då, dvs bara en enda rad i textfilen som skapas?
Kod: Markera allt
ditt_kommando <filnamn.txt >filnamn.txt.tmp && mv -f filnamn.txt.tmp filnamn.txt
Aha, omständigt! Jag ska göra ett försök så får vi se hur det går.Konservburk skrev:Bara om du inte läser från filnamn.txt samtidigt.ubot skrev:Men om jag har > filnamn.txt på slutet. Borde inte radändringarna följa med då, dvs bara en enda rad i textfilen som skapas?
Det som alltid fungerar är att spara resultatet till en ny fil och först därefter ersätta den gamla...
Kod: Markera allt
ditt_kommando <filnamn.txt >filnamn.txt.tmp && mv -f filnamn.txt.tmp filnamn.txt
Det behövs som sagt inte om direkt kör allt genom en pipeline istället: curl ... | sed ... | osv ...ubot skrev:Aha, omständigt! Jag ska göra ett försök så får vi se hur det går.
Nja, jag har testat curl ... | tr -d "\n" | grep ... > textfil.txt, men det såg inte ut att fungera. När jag öppnar textfilen i gedit eller nano så ligger texten inte på en enda rad. Hur ska jag skriva för att det ska fungera då isf?Konservburk skrev:Det behövs som sagt inte om direkt kör allt genom en pipeline istället: curl ... | sed ... | osv ...ubot skrev:Aha, omständigt! Jag ska göra ett försök så får vi se hur det går.
Kod: Markera allt
curl -sL http://gnu.org | tr -d '\n' >textfil.txt
Haha, nej, det vet inte jag heller. Det är bara en fix idé jag har fått efter massa trixande fram och tillbaka. Jag spolade textfilen och körde allt i en pipe och det gick ju lika bra det. Nu verkar allt funger iaf. Tack! Frågan är varför så många säger att sed/grep/awk inte är bra för att extrahera innehåll mellan html/xml-taggar? Vad är det som kan gå fel om man gör så som jag har gjort nu, dvs lägger hela koden på en enda rad och sedan klipper ut allt mellan vissa taggar?Konservburk skrev:Det här funkar för mig:
Men jag förstår inte varför du vill mellanlagra det i en textfil?Kod: Markera allt
curl -sL http://gnu.org | tr -d '\n' >textfil.txt
Kod: Markera allt
curl -Ls http://www.expressen.se/Nyheter/1.1722360/misstankte-helikopterpiloten-har-gripits | tr -d "\n" | grep -o "<title>.*</title>"
Problemet är att det kan finnas en massa specialfall som man lätt missar om man inte tänker på det ordentligt. Ingenting som inte går att lösa dock.ubot skrev:Frågan är varför så många säger att sed/grep/awk inte är bra för att extrahera innehåll mellan html/xml-taggar? Vad är det som kan gå fel om man gör så som jag har gjort nu, dvs lägger hela koden på en enda rad och sedan klipper ut allt mellan vissa taggar?