Удаление первого пробела в строке

Как упомянул Рованион, чтобы перечислить все диски за один раз:

hddtemp /dev/sd?

Или, если вы предпочитаете цикл for:

for i in /dev/sd[a-z]; do hddtemp "$i"; done
7
22.01.2017, 16:44
5 ответов

Маленький и простой однострочник Perl:

$ perl -ane 'printf "%s",@F[0];@F[0]="";print @F'  <<< "2015-04-18 10:21:59 10 05430 -9999 -9999 000000000000"                        
2015-04-1810:21:591005430-9999-9999000000000000

Или даже проще, как предлагает mik в комментариях:

perl -pe 's/ //' <<< "2015-04-18 10:21:59 10 05430 -9999 -9999 000000000000"

Python тоже может это делать. Вот небольшой сценарий, который выполняет свою работу. При необходимости его можно свести к однострочному:

#!/usr/bin/env python
from __future__ import print_function
import sys
for line in sys.stdin:
    words=line.strip().split()
    print(words[0],end="")
    print(" ".join(words[1:]))

И с той же строкой во входном файле, дублированной 3 раза, вот тест для многострочного ввода:

$ ./remove_leading_space.py < input.txt                                                                                               
2015-04-1810:21:59 10 05430 -9999 -9999 000000000000
2015-04-1810:21:59 10 05430 -9999 -9999 000000000000
2015-04-1810:21:59 10 05430 -9999 -9999 000000000000

Если вы отредактировали только одну единственную строку, вы можете сделайте это так:

$ ./remove_leading_space.py <<< "2015-04-18 10:21:59 10 05430 -9999 -9999 000000000000"                                               
0
27.01.2020, 20:14

Это довольно простой вопрос.

sed -i 's / //' / path / to / file

Попробуйте эту команду и не добавляйте s в конец выражения sed.

Он просто удалит первый пробел в каждой строке.

-1
27.01.2020, 20:14

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

> awk '{print $1$2,$3,$4,$5,$6,$7}' yourfile > outputfile

Вывод:

> cat outputfile

2015-04-1810:21:59 10 05430 -9999 -9999 000000000000

Вы можете удалить любое пространство в строке и оставить любое

Предполагая : входной файл должен содержать:

  1. без начальных пробелов
  2. без последовательных пробелов
  3. без табуляции
  4. всего менее семи пробелов

Если какое-либо из этих предположений нарушается, результат будет неверным

1
27.01.2020, 20:14

Вы можете использовать sed для этого:

sed 's/ //' infile >outfile

Это применяет замену ко всем строкам файла infile , который заменит первый пробел ничем (т.е. удалит его). Вывод сохраняется в файле outfile . С помощью sed 's / // N' , где N - целое число от 1 до 9, вы можете выбрать, какое пространство удалить.

Если строка находится в переменной оболочки, вы можете использовать

var="${var/ /}"

Здесь используется расширение параметра $ {параметр / шаблон / строка} в bash , чтобы сделать то же самое. как команду sed , но со значением в $ var . Результирующая строка в этом примере затем сохраняется обратно в $ var .

21
27.01.2020, 20:14

Вы можете использовать Vim в режиме Ex:

ex -sc '%s/ //|x' file
  1. % выбрать все строки

  2. s заменить

  3. x сохранить и закрыть

1
27.01.2020, 20:14

Теги

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