【问题标题】:Replace single quotes around integer values in a text file using batch file使用批处理文件替换文本文件中整数值周围的单引号
【发布时间】:2020-01-27 09:08:52
【问题描述】:

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

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

【问题讨论】:

  • 你试过什么,你卡在哪里了?请edit您的问题并分享您的编码尝试minimal reproducible example!就目前而言,您的问题只不过是一个代码请求,这显然是题外话。请参加tour 并在此处学习How to Ask!顺便说一句,“上面的逗号”实际上被称为“撇号”......
  • 我猜如果我们可以通过for循环修改每一行中的第三个token或字段,我们可能会达到效果。

标签: batch-file


【解决方案1】:

使用常用实用程序非常容易:

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

【讨论】:

  • 当然,但由于这是一个与 Windows 相关的问题,您应该在回答中提及...
【解决方案2】:

如果你想使用 sed

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

【讨论】:

    猜你喜欢
    • 2018-07-17
    • 2012-07-22
    • 2011-07-29
    • 2016-05-15
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多