Замените одинарные кавычки вокруг целочисленных значений в текстовом файле, используя командный файл - PullRequest
0 голосов
/ 27 сентября 2019

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

На самом деле я писал командный файл для подготовки команды вставки SQL из текстового файла.Почти завершили, но застряли на удалении одинарных кавычек, включающих целое число

Предположим, у меня есть текстовый файл, его содержимое выглядит следующим образом.

'abc','def','123','1abc'

'xy','mncef','456','cd'

Я бы хотел, чтобы пакетный файл удалил эти верхние кавычки вокруг целого числа, и результат должен быть таким:

'abc','def',123,'1abc'

'xy','mncef',456,'cd'

Я пробовал код ниже, но он удаляет весь апостроф.

@echo off
setlocal enabledelayedexpansion
(for /f "tokens=1-4 delims=," %%a in (sample.txt) do (
  set "$line=%%a,%%b,%%c,%%d"
  echo !$line:'=!
  )
  )>out.txt
type out.txt  

Выход Ouput:

abc,def,123,1abc
xy,mncef,456,cd

Но я хочу, чтобы одиночная кавычка была удалена из позиции, поскольку целочисленное значение будет в фиксированной позиции в каждой строке, какздесь на 3-м.

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Использовать обычные утилиты довольно просто:

$ cat a.txt
'abc','def','123','1abc'
'xy','mncef','456','cd'
$ ./replace.sh 
$ cat a.txt
'abc','def',123,'1abc'
'xy','mncef',456,'cd'

А вот сценарий:

$ cat replace.sh 
#!/bin/bash

for i in `egrep -o \'[0-9]+\' a.txt`;do
    sed -i "s/$i/${i:1:${#i}-2}/g" a.txt
done;
0 голосов
/ 27 сентября 2019

, если вы хотите использовать sed

sed -r "s/'([0-9]+)'/\1/g" filename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...