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

как выравнивание линий с левой стороны с помощью 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

1 ответ1

3

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

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

где

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .