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

0

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

как выравнивание линий с левой стороны с помощью 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={{hdfs_log_dir_prefix}}/$USER

# History server logs
               export HADOOP_MAPRED_LOG_DIR={{mapred_log_dir_prefix}}/$USER

# Where log files are stored in the secure data environment.
         export HADOOP_SECURE_DN_LOG_DIR={{hdfs_log_dir_prefix}}/$HADOOP_SECURE_DN_USER

   # File naming remote slave hosts.  $HADOOP_HOME/conf/slaves by default.
# export HADOOP_SLAVES=${HADOOP_HOME}/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={{hdfs_log_dir_prefix}}/$USER

# History server logs
export HADOOP_MAPRED_LOG_DIR={{mapred_log_dir_prefix}}/$USER

# Where log files are stored in the secure data environment.
export HADOOP_SECURE_DN_LOG_DIR={{hdfs_log_dir_prefix}}/$HADOOP_SECURE_DN_USER

# File naming remote slave hosts.  $HADOOP_HOME/conf/slaves by default.
# export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves
Царь Давид
источник

Ответы:

3

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

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

где

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

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

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

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

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

sed -i 's/^[ \t]*//' file.txt
Камил Мачоровский
источник