2013-11-30 4 views
2

У меня есть довольно большой текстовый файл, где есть дополнительное пространство между каждым символом;Удалить только отдельные пробелы в текстовом файле с помощью sed, perl, awk, tr или ничего

I t l o o k s l i k e t h i s .

Я хотел бы, чтобы удалить лишние символы так

It looks like this.

через терминал Linux. Кажется, я не могу найти это, не удаляя все пробелы. На данный момент я готов попробовать любое решение. Я был бы признателен за любой толчок в правильном направлении.

+1

Вы уверены, что они являются пробелы и не NUL персонажи? Похоже, что у вас что-то закодировано с использованием UTF-16, и в этом случае решением было бы изменить кодировку на UTF-8 или что-то еще. – ikegami

ответ

4
$ echo 'I t l o o k s l i k e t h i s . ' | sed 's/\(.\) /\1/g' 
It looks like this. 
+0

Awesome. Только то, что мне было нужно. Спасибо за помощь, также благодарим вас за очень быстрый ответ. –

+0

@Jonh: Не могли бы вы объяснить работу команды? Это будет большой помощью. –

3

Вы уверены, что промежуточные символы являются пробелами? Скорее всего, это файл UTF-16.

Предлагаю вам использовать способный редактор, чтобы открыть его как таковой и преобразовать его в UTF-8.

+1

Бородин прав. попробуйте ввести 'file your_file.txt', чтобы получить кодировку. вы не хотите правильно испортить свои данные? – Pierre

1

До тех пор, пока это любой другой символ, от которого вы хотите избавиться, вы можете использовать python.

>>> s = "I t l o o k s l i k e t h i s ." 
>>> print s[0::2] 
It looks like this. 

Если вы хотите сделать это для текстового файла, выполните следующие действия:

with open("/path/to/file.txt") as f: 
    f = f.readlines() 

with open("/path/to/new.txt") as g: 
    for i in f: 
     g.write(str(i)[0::2]+"\n") 
1
perl -pe 's|(\s+)| " "x (length($1)>1) |ge' file 
3

awk решение

echo "I t l o o k s l i k e t h i s ." | awk '{for (i=1;i<=NF;i+=2) printf $i;print ""}' FS="" 
It looks like this. 
+0

Не могли бы вы объяснить работу команды? Это будет большой помощью. –

 Смежные вопросы

  • Нет связанных вопросов^_^