• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af sjofelpanda | 08.06.2010 16:10

Sed og mellemrum

Hjælp generelt
Hej alle sed-guruer.

Jeg har en tekstfil, som indeholder adskillige linier der ender med en masse mellemrum (flere end 3) efterfuldt af en række forskellige tal (typisk fire tal). Dette vil jeg gerne fjerne, så linien


Test test bla bla 1985


bliver til


Test test bla bla


Dette burde kunne gøres med sed, som jeg slet ikke er inde i. Indtil videre har fundet ud af, at


cat "$FILE0" | \
sed -e 's/\s\{3,\}/ /g' > "$FILE00"


fjerner alle forekomster af 3 eller flere mellemrum, men jeg vil jo gerne have slutningen af linierne fjernet samtidig.
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer5

# 1

16 år 1 måned siden

Permalink

Indsendt af mich den 8. juni 2010 kl. 17:33

Permalink

Sed og mellemrum

Jeg er ingen ørn til sed, men følgende bash-script skulle kunne gøre det.

#!/bin/bash

while read line ;do
echo "${line%% *}" >> "$File00"
done < "$File0"

Det sletter fra og med de første tre mellemrum og resten af linien, linie for linie i filen "$File0" og skriver til "$File00".
Skal du behandle flere filer, skal der lidt 'for File0 in ' osv med.

Prøv på en kopi først. Jeg påtager mig intet ansvar, hvis du sletter vigtige filer.

  • Log ind eller opret dig for at tilføje kommentarer

# 2

16 år 1 måned siden

Permalink

Indsendt af mrbrown79 den 11. juni 2010 kl. 15:31

In reply to Sed og mellemrum by mich

Permalink

Et forsøg fra en ikke-guru

$ echo "Test test bla bla 1985" | sed 's/\(.*\) \{3,\}.*$/\1/'
Test test bla bla
  • Log ind eller opret dig for at tilføje kommentarer

# 3

16 år 1 måned siden

Permalink

Indsendt af sjofelpanda den 8. juni 2010 kl. 19:29

Permalink

Re: Sed og mellemrum

Tak for forslaget. Jeg kunne ikke helt få dit bash-script til at fungere præcis som jeg ville. Jeg har fandt dog frem til følgende, som virker:


cat "$FILE0" | \
sed -e '
s/\s\{3,\}/&\
/
s/\n.*//
' > "$FILE00"
  • Log ind eller opret dig for at tilføje kommentarer

# 4

16 år 1 måned siden

Permalink

Indsendt af redeeman den 9. juni 2010 kl. 02:29

Permalink

Re: Sed og mellemrum

cat fil.txt | awk '{print $1 " " $2 " " $3}'
  • Log ind eller opret dig for at tilføje kommentarer

# 5

16 år 1 måned siden

Permalink

Indsendt af marlar den 11. juni 2010 kl. 16:22

Permalink

#4 virker ikke hos mig.
Hvis

#4 virker ikke hos mig.

Hvis det bare handler om at fjerner tal i slutningen af en linje, virker dette:

echo "Test test bla bla 1985" | sed -r 's/[0-9]+$//g'
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

tst 0
Linux Fanpakke til LUG'er og foreninger 0
KDE Plasma 6.6 skrivebordsmiljø udgivet 0
GRUB 2.14 introducerer understøttelse af EROFS, forbedringer til Btrfs og LVM 0
KDE Plasma 6.6 tilføjer en funktion, som brugerne har spurgt efter i evigheder 0

Seneste aktivitet

(U)hyggen breder sig 8
GRUB eller Limine? 2
Commodore-telefon med SailfishOS 2
Det engang så elskede PCLinuxOS er tilbage - og det er stadig en fantastisk Windows erstatning 2
Lenovo P16 2
Microsoft har netop officielt bragt Linux kommandoer til Windows 2
Ubuntu Mate 26.04 | Kern 4
Gnome extensions 6
USB problemer 14
Copy fail sårbarhed åbner for Root adgang 5
Eksperter frygter konsekvenserne ved kunstig intelligens 2
Linux 3
Frankrig lancerer regeringsplan for skift til Linux desktops 4
Pepsi Challenge 18
Canonical planlægger Kontroversielle GRUB ændringer til Ubuntu 26.10 Secure Boot 1
Ubuntu MATE grundlægger Martin Wimpress træder tilbage efter 12 år 1
OpenShot 3.5 tager et spring fremad inden for ydeevne, AI og videoredigering 4
rsync og filsystem 7
Stor sejr for open source, da Tyskland støtter åbent dokumentformat 2
youtube-tui: Nyd YouTube fra terminalen som en professionel 5

© 2026 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !