Как удалить пустое пространство при извлечении значения из входного файла в unix - PullRequest
0 голосов
/ 06 августа 2020

Я пишу сценарий, в котором мне нужно получить входные параметры для сценария из текстового файла. Необходимо получить около 10 таких входных параметров. Входной файл фактически извлекается из инструмента с описанием информации о клиенте, поэтому он может быть в любом формате. Иногда после или перед заголовком появляется пустое пространство или пробел.

For example: 
Consider the customer details as below
Name: Divya 
Email: divyaapinky@gmail.com

И я делаю следующее в моем скрипте

name=`grep -i name input_file.txt | awk -F":" '{print $2}'`
echo $name 

Вышеуказанное дает мне имя с пробел «Дивья»

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

Не могли бы вы предложить мне команду для этого?

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Я вижу grep немного проблематично c: что произойдет, если «имя» является частью адреса электронной почты? Лучшим решением было бы:

INPUTFILE="input_file.txt"
NAME=`grep -i "^name:" "${INPUTFILE}" | sed 's/^name:[ \t]*//; s/[ \t]*$//'`
echo "${NAME}"

Это greps «name:» только в начале строки и исключает начальные и конечные пробелы и табуляции.

0 голосов
/ 06 августа 2020

Вы можете использовать команду sed, чтобы получить желаемый результат. Ниже приведена команда, которая может вам помочь.

sed s/^ *//g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...