wie Linien auf der linken Seite mit einem Linienliner sed oder perl ausgerichtet werden

488
King David

Wir haben die folgende Datei

wie die linien auf der linken seite mit sed oder perl einzeiliger verlegt werden

more conf.env  # Extra ssh options. Empty by default. export HADOOP_SSH_OPTS="-o ConnectTimeout=5 -o SendEnv=HADOOP_CONF_DIR"  # Where log files are stored. $HADOOP_HOME/logs by default. export HADOOP_LOG_DIR={}/$USER  # History server logs export HADOOP_MAPRED_LOG_DIR={}/$USER  # Where log files are stored in the secure data environment. export HADOOP_SECURE_DN_LOG_DIR={}/$HADOOP_SECURE_DN_USER  # File naming remote slave hosts. $HADOOP_HOME/conf/slaves by default. # export HADOOP_SLAVES=$/conf/slaves 

erwartete Ergebnisse

more conf.env  # Extra ssh options. Empty by default. export HADOOP_SSH_OPTS="-o ConnectTimeout=5 -o SendEnv=HADOOP_CONF_DIR"  # Where log files are stored. $HADOOP_HOME/logs by default. export HADOOP_LOG_DIR={}/$USER  # History server logs export HADOOP_MAPRED_LOG_DIR={}/$USER  # Where log files are stored in the secure data environment. export HADOOP_SECURE_DN_LOG_DIR={}/$HADOOP_SECURE_DN_USER  # File naming remote slave hosts. $HADOOP_HOME/conf/slaves by default. # export HADOOP_SLAVES=$/conf/slaves 
0

1 Antwort auf die Frage

3
Kamil Maciorowski

Dadurch werden alle Leerzeichen und Tabulatoren am Anfang jeder Zeile gelöscht:

sed 's/^[ \t]*//' 

woher

  • ^ entspricht dem Anfang einer Zeile
  • [ \t] entspricht einem Leerzeichen oder einer Registerkarte
  • *lässt den vorherigen […]Block so oft wie möglich null oder mehr arbeiten (so dass er mehrere Leerzeichen und / oder Registerkarten zuordnen kann)

Der gesamte s/…//Befehl ersetzt Muster ( ^[ \t]*in diesem Fall) durch nichts.

Anwendungsbeispiel:

sed 's/^[ \t]*//' <input.txt >output.txt 

oder an Ort und Stelle (Hinweis -iwird von POSIX nicht benötigt):

sed -i 's/^[ \t]*//' file.txt