有個文件 a
,其內容為:
1, 2, 3
$ head a
1, 2, 3
想把上面的文件转成如下的格式 用于 sql 条件查询中:
"1","2","3"
利用 awk
試了以下三種方式:
#多出了一个空行
$ awk -v 'RS= ' {print} a
1,
2,
3
#想通过这种方式删除空行 失败
$ awk -v 'RS= ' '{gsub(/^$/,"");print}' a
1,
2,
3
#3后面有个换行
$ awk -v 'RS= ' 'ORS=","{gsub(/,$/,"");print "\""$0"\""}' a
"1","2","3
",%
不知道有没更好的方式实现此功能?
解释:
1,
ruby -e
执行后面字串命令2,
$_
表示gets
的内容3,
gsub
用于字串匹配替换4,
%(...)
, 用于生成字串, 否则要""#{i}"", 比较难看5,
gets
, 会读入标准输入, 或文件或更简单的使用sed:
解释:
1,
sed
默认对文件的每一行执行动作2,
s
表示进行文本替换3,
,
为分隔符, 可以是;
,/
,!
等4,
\(...\)
表示正则表达式的'组', 以方便后面的\1
进行反向引用5,
[0-9]
匹配数字6,
g
表示替换所有匹配