Teken toevoegen aan einde van elke zin in .txt file

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • whoopy_
  • Registratie: November 2010
  • Laatst online: 29-09 17:36
Goedenavond Tweakers,

onderstaand deze gegevens:

code:
1
2
3
4
5
6
7
cat PUZZEL.txt
l f t e s j
l e f s l a
l p n a a g
k p d f p e
a l e g e r
n e t e n f


Nu wil ik aan het eind van elke regel een teken (# bijvoorbeeld) toevoegen zodat ik weet wanneer ik aan het einde van de regel ben, nu kom ik er echt niet uit hoe ik die nou kan toevoegen acher elke regel. Kan iemand mij opweg helpen hiermee?

Bedankt alvast!

Acties:
  • 0 Henk 'm!

  • Ravefiend
  • Registratie: September 2002
  • Laatst online: 17:07

Ravefiend

Carpe diem!

Wat dacht je van een check carriage return / line feed?

Acties:
  • 0 Henk 'm!

  • anboni
  • Registratie: Maart 2004
  • Laatst online: 11:23
Dat teken staat er eigenlijk al: de newline (\n). Als je per se zelf nog wat wilt toevoegen, moet dat met sed wel lukken, hier vind je een uitgebreide uitleg: http://www.grymoire.com/Unix/Sed.html

Acties:
  • 0 Henk 'm!

  • whoopy_
  • Registratie: November 2010
  • Laatst online: 29-09 17:36
Ravefiend schreef op zaterdag 12 oktober 2013 @ 18:31:
Wat dacht je van een check carriage return / line feed?
Bedoel je een \n ? In dat geval, ik heb al geprobeerd met sed de \n met # te vervangen maar die schijnen niet in het bestand voor te komen.

Acties:
  • 0 Henk 'm!

  • whoopy_
  • Registratie: November 2010
  • Laatst online: 29-09 17:36
anboni schreef op zaterdag 12 oktober 2013 @ 18:33:
Dat teken staat er eigenlijk al: de newline (\n). Als je per se zelf nog wat wilt toevoegen, moet dat met sed wel lukken, hier vind je een uitgebreide uitleg: http://www.grymoire.com/Unix/Sed.html
code:
1
cat PUZZEL.txt | sed 's/\n/#/g´


Dit heb ik geprobeerd maar heeft niks geholpen helaas.

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
whoopy_ schreef op zaterdag 12 oktober 2013 @ 18:33:
[...]


Bedoel je een \n ? In dat geval, ik heb al geprobeerd met sed de \n met # te vervangen maar die schijnen niet in het bestand voor te komen.
http://stackoverflow.com/...can-i-replace-a-newline-n

Daar wordt ondermeer uitgelegd waarom.

D'r staat echter ook hoe je gewoonweg iets achteraan de regel kan plakken i.p.v. een replace.

Acties:
  • 0 Henk 'm!

  • anboni
  • Registratie: Maart 2004
  • Laatst online: 11:23
whoopy_ schreef op zaterdag 12 oktober 2013 @ 18:33:
[...]


Bedoel je een \n ? In dat geval, ik heb al geprobeerd met sed de \n met # te vervangen maar die schijnen niet in het bestand voor te komen.
sed werkt op regelniveau, dus sed heeft die \n eigenlijk al voor eigen gebruik geconsumeerd (zie het maar als een veldscheidingsteken). Om in sed iets met het einde van de regel te doen, heb je de $ nodig in je regexp.

Acties:
  • 0 Henk 'm!

  • vanaalten
  • Registratie: September 2002
  • Laatst online: 16:40
sed -i 's/$/#/' PUZZEL.txt

Acties:
  • 0 Henk 'm!

Verwijderd

Even in Notepad++, werkt hier prima:
Afbeeldingslocatie: http://tweakers.net/ext/f/Z7fiNClx1X54WgNIEUMoUc4P/medium.png

Edit: Ohh, ehhh non-windows....

[ Voor 7% gewijzigd door Verwijderd op 12-10-2013 18:39 ]


Acties:
  • 0 Henk 'm!

  • whoopy_
  • Registratie: November 2010
  • Laatst online: 29-09 17:36
Dit was de antwoord op mijn vragen, bedankt voor de hulp heren!

Was mij niet bekend dat je binnen sed ook $ kan pakken voor het laatste character.

Acties:
  • 0 Henk 'm!

  • anboni
  • Registratie: Maart 2004
  • Laatst online: 11:23
whoopy_ schreef op zaterdag 12 oktober 2013 @ 18:38:
[...]

Dit was de antwoord op mijn vragen, bedankt voor de hulp heren!

Was mij niet bekend dat je binnen sed ook $ kan pakken voor het laatste character.
Kleine nuance: $ is niet het laatste character, $ is het einde van de regel (m.a.w. de positie direct na het laatste character :) )

Acties:
  • 0 Henk 'm!

Verwijderd

whoopy_ schreef op zaterdag 12 oktober 2013 @ 18:38:

Was mij niet bekend dat je binnen sed ook $ kan pakken voor het laatste character.
Dat is redelijk standaard voor regular expressions.

Acties:
  • 0 Henk 'm!

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 21-08 15:56

webfreakz.nl

el-nul-zet-é-er

En "^" voor het begin van een regel.

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


Acties:
  • 0 Henk 'm!

  • whoopy_
  • Registratie: November 2010
  • Laatst online: 29-09 17:36
webfreakz.nl schreef op zaterdag 12 oktober 2013 @ 18:44:
En "^" voor het begin van een regel.
Ja dat heb ik nu
cat PUZZEL.txt | sed 's/$/#/g' |sed 's/^/#/g' > PUZZELlijst.txt
#l f t e s j#
#l e f s l a#
#l p n a a g#
#k p d f p e#
#a l e g e r#
#n e t e n f#
Kleine vraag nog, hoe kan ik binnen een rij bijvoorbeeld de 2e tm de 4e charachter pakken? head en tail werkt natuurlijk niet aangezien dat van boven naar beneden rekent.

Acties:
  • 0 Henk 'm!

Verwijderd

Misschien moet je even gewoon vertellen wat je aan het doen bent, want het kan vast veel eenvoudiger.

Acties:
  • 0 Henk 'm!

  • whoopy_
  • Registratie: November 2010
  • Laatst online: 29-09 17:36
Verwijderd schreef op zaterdag 12 oktober 2013 @ 18:52:
Misschien moet je even gewoon vertellen wat je aan het doen bent, want het kan vast veel eenvoudiger.
Ik wil een puzzel van 6 bij 6 letters oplossen aan de hand van een bestaande woordenlijst, voorbeeld puzzel:
code:
1
2
3
4
5
6
j s e t f l
a l s f e l
g a a n p l
e p f d p k
r e g e l a
f n e t e n

Binnen deze puzzel kunnen 2/3/4/5/6letterwoorden voorkomen. Zowel van links naar rechts, als van rechts naar links en van onder naar boven en boven naar onder.

Links naar rechts spreek natuurlijk voor zich.
bij rechts naar links lezen kan je gemakkelijk met rev de letters omdraaien.
Bij van onder naar boven heb ik de puzzel getransponeert (van de rijen kolommen gemaakt en visa versa).
Voor boven naar beneden kan je de puzzel voor reversen.

Nu moet ik nog 2/3/4/5/6letterwoorden maken uit deze puzzel(in alle 4 richtingen) om die te vergelijken met een bestaande woordenlijst.

En daar zit de lastigheid, voor mij althans.

Acties:
  • 0 Henk 'm!

Verwijderd

Een (redelijk gore) manier om dit te doen is bijvoorbeeld:
for i in $(seq 1 6); do awk "{printf $"$i"}" PUZZEL.txt; echo; done

Ik snap echt niet wat je aan het doen bent/was met de # aan het begin en einde van een regel.

Acties:
  • 0 Henk 'm!

  • whoopy_
  • Registratie: November 2010
  • Laatst online: 29-09 17:36
Verwijderd schreef op zaterdag 12 oktober 2013 @ 19:19:
Een (redelijk gore) manier om dit te doen is bijvoorbeeld:
for i in $(seq 1 6); do awk "{printf $"$i"}" PUZZEL.txt; echo; done

Ik snap echt niet wat je aan het doen bent/was met de # aan het begin en einde van een regel.
Sorry, ik ben vergeten te vermelden dat er geen statements als if/for/while mogen worden gebruikt.
Dit had ik zelf als idee:

Stel je neemt de rij a l e g e r
Je zet er haakjes omheen dus # a l e g e r #
Nu ga je 2/3/4/5/6letterwoorden proberen te maken met de letters onder elkaar door steeds bij de tail -n +n te doen. Als je dan bijv. een bigram tegenkomt wat ook in de woordenlijst voorkomt kan je het aftikken MITS er geen # in voorkomt.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 15:21
whoopy_ schreef op zaterdag 12 oktober 2013 @ 20:29:
Sorry, ik ben vergeten te vermelden dat er geen statements als if/for/while mogen worden gebruikt.
Waarom niet :?

Acties:
  • 0 Henk 'm!

  • kaasplank1
  • Registratie: Juni 2009
  • Laatst online: 26-09 17:52
klinkt als huiswerk.

niks mis mee overigens hoor

[ Voor 12% gewijzigd door kaasplank1 op 12-10-2013 21:30 ]

( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

kaasplank1 schreef op zaterdag 12 oktober 2013 @ 21:29:
[...]

klinkt als huiswerk.

niks mis mee overigens hoor
Niets mis mee totdat we zijn opdracht aan het maken zijn. Omdat nu opeens een beperking voor oplossen naar voren komt, denk ik dat het een schoolopdracht is. Hoewel het niet in het beleid staat, is GoT nog steeds geen plaats om je huiswerk te dumpen en anderen deze laat maken. Tips kan je altijd vragen en die zijn nu genoeg gegeven. Het wordt tijd dat Whoopy_ zelf verder ga nadenken over de oplossing.

Met grep en cut kom je ook al een heel eind.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • whoopy_
  • Registratie: November 2010
  • Laatst online: 29-09 17:36
Hero of Time schreef op zaterdag 12 oktober 2013 @ 22:53:
[...]

Niets mis mee totdat we zijn opdracht aan het maken zijn. Omdat nu opeens een beperking voor oplossen naar voren komt, denk ik dat het een schoolopdracht is. Hoewel het niet in het beleid staat, is GoT nog steeds geen plaats om je huiswerk te dumpen en anderen deze laat maken. Tips kan je altijd vragen en die zijn nu genoeg gegeven. Het wordt tijd dat Whoopy_ zelf verder ga nadenken over de oplossing.

Met grep en cut kom je ook al een heel eind.
Excuses dat het uit is gelopen op een huiswerkvraag. Maar het is niet helemaal correct om dat mij aan te rekenen, het topic begon met een prima vraag lijkt mij. Dat er later context wordt gevraagd waardoor het op een huiswerkvraag gaat lijken is jammer.

Voor de geinteresseerden, dit is het geworden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
rev $1 > PUZZEL

for n in {1..6}
do
cut -d\   -f$n $1 | xargs echo | rev >> PUZZEL
done

sed 's/.*/& #/g' PUZZEL | sed 's/ /\n/g' - > lijst
 

for n in {2..6}
do
tail -n +$n lijst > gram_$n
done
 
paste -d\   lijst gram_2 >> alleGrams
paste -d\   lijst gram_2 gram_3 >> alleGrams
paste -d\   lijst gram_2 gram_3 gram_4 >> alleGrams
paste -d\   lijst gram_2 gram_3 gram_4 gram_5 >> alleGrams
paste -d\   lijst gram_2 gram_3 gram_4 gram_5 gram_6 >> alleGrams

grep -v '#' alleGrams > gefilterdengramlijst 
sed 's/ //g' gefilterdengramlijst > ngraf 

while read line; do
       grep ^$line$ ngraf | sort -u
done < $2
rm -f alleGrams
rm -f gefilterdengramlijst


De code moet nog wat worden opgeschoond en ik moet nog een manier zien te vinden om de ngrammen niet in een bestand maar in een variabele te stoppen.

Bedankt voor de hulp in ieder geval!

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

For loop mocht toch niet? Waarom gebruik je ze dan toch wel?

En meuk in een variabele plaatsen is zo simpel als VAR=$(uitvoeren).

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 10:44

Kees

Serveradmin / BOFH / DoC
whoopy_ schreef op zaterdag 12 oktober 2013 @ 20:29:
[...]

Sorry, ik ben vergeten te vermelden dat er geen statements als if/for/while mogen worden gebruikt.
Dit had ik zelf als idee:
In de bovenstaande code zie ik toch echt twee keer for en een while?

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • whoopy_
  • Registratie: November 2010
  • Laatst online: 29-09 17:36
Kees schreef op zondag 13 oktober 2013 @ 13:04:
[...]

In de bovenstaande code zie ik toch echt twee keer for en een while?
Dat is enkel om de code wat overzichtelijker te maken, snap het ook niet maar heb de regels niet bedacht.
Pagina: 1