[bash sed] vor ersten zeichen und hinter letztes zeichen zeichen einfügen und zlbruch entfernen
cat in| sed ‘s/^\(.\)/”\1/’|sed ‘s/\(.\)$/\1″/’|tr ‘\n’ ‘ ‘ > indexdl
aus http://sdökjdf wird “http://sdökjdf” (zeilenumbrich wird auch entfernt)
cat in| sed ‘s/^\(.\)/”\1/’|sed ‘s/\(.\)$/\1″/’|tr ‘\n’ ‘ ‘ > indexdl
aus http://sdökjdf wird “http://sdökjdf” (zeilenumbrich wird auch entfernt)
Reguläre Ausdrücke finden immer den längsten passenden String. Das kann manchmal unerwünscht sein. Will man zum Beispiel eine HTML-Seite in Text umwandeln, dann könnte man in Versuchung kommen folgendes Script zu verwenden:
sed -e 's/<.*>//g' text.html
Das liefert aber nicht den gewünschten Effekt, denn eine Zeile
Das <b>ist</b> ein <i>Beispiel</i>.
wird zu
Das.
verkrüppelt. Man muss also nur jene Zeichen bis zum ersten ‘>’ löschen:
sed -e 's/<[^>]*>//g' text.html
Muss man einen Text nicht bis zum ersten Vorkommen eines Zeichens sondern einer Zeichenkette bearbeiten, wird die RE ein bisschen komplizierter. Im Kapitel mit den Beispielen findet sich dazu ein Lösungsansatz (Löschen von Kommentaren).
cat mustimp3.htm| grep href|grep mp3 | sed s/^\ .*http/http/g| sed s/Mp3.*$/mp3/gi
sed s/^\ .*http/http/g
^=anfang bis http löschen und mit http ersetzen
mv /System/Library/TextInput/TextInput_de.bundle /System/Library/TextInput/TextInput_de.bundle.backup
just look for your language and then move it. Or choose a language which does not cross with you language
// ADC STUFF
uint16_t ReadChannel(uint8_t mux)
{
uint8_t i;
uint16_t result;
ADMUX = mux; // Kanal waehlen
ADMUX |= (0<<REFS1) | (1<<REFS0); // interne Referenzspannung nutzen
ADCSRA = (1<<ADEN) | (1<<ADPS1)| (1<<ADPS2) | (0<<ADPS0); // Frequenzvorteiler
// setzen auf 8 (1) und ADC aktivieren (1)
/* nach Aktivieren des ADC wird ein “Dummy-Readout” empfohlen, man liest
also einen Wert und verwirft diesen, um den ADC “warmlaufen zu lassen” */
ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
while ( ADCSRA & (1<<ADSC) ) {
; // auf Abschluss der Konvertierung warten
}
result = ADCW; // ADCW muss einmal gelesen werden,
// sonst wird Ergebnis der nächsten Wandlung
// nicht übernommen.
/* Eigentliche Messung – Mittelwert aus 4 aufeinanderfolgenden Wandlungen */
result = 0;
for( i=4; i>=1; i– )
{
ADCSRA |= (1<<ADSC); // eine Wandlung “single conversion”
while ( ADCSRA & (1<<ADSC) ) {
; // auf Abschluss der Konvertierung warten
}
result += ADCW; // Wandlungsergebnisse aufaddieren
//if (ADCW <= 350){lo++;lo1+=ADCW;}else{hi++;hi1+=ADCW;}
}
ADCSRA &= ~(1<<ADEN); // ADC deaktivieren (2)
// if (lo>=hi){lo1/=lo; result=hi1;} else {hi1/=hi;result=hi1;}
result /= 4; // Summe durch vier teilen = arithm. Mittelwert
// mux==5?uart_puts(“5: “):uart_puts(“7: “);
// Ausgabe an UART
// if (debug==1)
/* uart_puts(itoa((1024-result),h,10));
uart_puts(“\n\r”);
*/
return result;
}
mit einem taster 4 befehle durchtoggeln
#define F_CPU 1e6
#include <util/delay.h>
#include <avr/io.h>
#include <stdio.h>
int main(void)
{
char a=0;
DDRD = 0x60;
PORTD = 0x00;
while(1)
{
if (PIND & (1<<PIND2)) {
if (a==0) {PORTD = 0x20;a=1;}
else if (a==1) {PORTD = 0x40;a=2;}
else if (a==2) {PORTD = 0x60;a=3;}
else if (a==3) {PORTD = 0x00;a=0;}
_delay_ms(150);
while (PIND & (1<<PIND2)) {}
}
}
}