Как выровнять линии с левой стороны с помощью sed или perl one line liner

322
King David

у нас есть следующий файл

как выравнивание линий с левой стороны с помощью sed или perl one line liner

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 

Ожидаемые результаты

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 ответ на вопрос

3
Kamil Maciorowski

Это удалит все пробелы и табуляции в начале каждой строки:

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

где

  • ^ соответствует началу строки
  • [ \t] соответствует пробелу или табуляции
  • *заставляет предыдущий […]блок работать ноль или более раз, столько раз, сколько он может (чтобы он мог соответствовать нескольким пробелам и / или символам табуляции)

Вся s/…//команда заменяет шаблон ( ^[ \t]*в данном случае) ничем.

Пример использования:

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

или на месте (примечание -iне требуется POSIX):

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

Похожие вопросы