使用批处理文件替换文本文件中整数值两边的单引号



我是批处理文件编程的新手。需要编写一个批处理文件,该文件可以删除整数值周围的单引号。

实际上,我正在编写一个批处理文件以从文本文件准备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  

即将推出的是:

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

但是我希望从位置中删除单引号,因为整数值将位于每行的固定位置,就像这里的第 3 行一样。

使用常用实用程序非常简单:

$ 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;

如果你想使用sed

sed -r "s/'([0-9]+)'/1/g" filename

最新更新