Оболочка дублирует пробелы в файле - PullRequest
0 голосов
/ 31 марта 2020

Можно ли удалить несколько пробелов из текстового файла и сохранить изменения в одном файле с помощью awk или grep?

Input example:
aaa     bbb  ccc
   ddd    yyyy

Output I want:
aaa bbb ccc
ddd yyyy

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Использование sed

sed -i -E  's#[[:space:]]+# #g' < input file 

Для удаления пробелов в начале

sed -i -E  's#[[:space:]]+# #g; s#^ ##g' < input file

Демо:

$cat test.txt
aaa     bbb  ccc
   ddd    yyyy

Output I want:
aaa bbb ccc
ddd yyyy
$sed -i -E  's#[[:space:]]+# #g' test.txt 
$cat test.txt
aaa bbb ccc
 ddd yyyy

Output I want:
aaa bbb ccc
ddd yyyy
$

2 голосов
/ 31 марта 2020

Просто сбросьте значение от $ 1 до снова $ 1, что позволит OFS войти в изображение и добавит необходимые пробелы в строках.

awk '{$1=$1} 1' Input_file


РЕДАКТИРОВАТЬ: Поскольку OP упомянул, что если мы хотим сохранить только начальные пробелы, попробуйте следующее.

awk '
match($0,/^ +/){
  spaces=substr($0,RSTART,RLENGTH)
}
{
  $1=$1
  $1=spaces $1
  spaces=""
}
1
'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...