求脚本!!!!
-
- 帖子: 16
- 注册时间: 2010-07-09 20:28
求脚本!!!!
小弟有一文件a.dat:
..........
y1=compt_a
y2=compt_b
y3=compt_c
...................
想得到字符串ss="COMPT_A","COMPT_B","COMPT_C"
小弟试了很久,未成功,求帮助。
ss=""
for each in `cat a.dat |grep "compt" | cut -d"=" -f2 |tr a-z A-Z`
do
echo $each
ss=\"$ss\",\"$each\"
done
..........
y1=compt_a
y2=compt_b
y3=compt_c
...................
想得到字符串ss="COMPT_A","COMPT_B","COMPT_C"
小弟试了很久,未成功,求帮助。
ss=""
for each in `cat a.dat |grep "compt" | cut -d"=" -f2 |tr a-z A-Z`
do
echo $each
ss=\"$ss\",\"$each\"
done
- sevk
- 帖子: 2060
- 注册时间: 2007-05-08 16:26
- 系统: arch
- 来自: 火星内核某分子内某原子核内
- 联系:
Re: 求脚本!!!!
不就是读取 a.dat 并过滤嘛, bash直接执行ruby一行代码:
代码: 全选
ruby -e "p File.read('a.dat').scan(/.+=(.+)$/)"
打印结果:
[["compt_a"], ["compt_b "], ["compt_c"]]
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
- sevk
- 帖子: 2060
- 注册时间: 2007-05-08 16:26
- 系统: arch
- 来自: 火星内核某分子内某原子核内
- 联系:
Re: 求脚本!!!!
转化成大写:
输出:
代码: 全选
ruby -e "p File.read('a.dat').scan(/.+=(.+)$/).map{|x| x[0].upcase}"
代码: 全选
["COMPT_A", "COMPT_B ", "COMPT_C"]
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
-
- 帖子: 16
- 注册时间: 2010-07-09 20:28
Re: 求脚本!!!!
谢谢,我不会rubby
机子上没装rubby,也没权限装,还有别的方法吗?
[uidt5109@jz002 home]$ rubby
-bash: rubby: command not found
机子上没装rubby,也没权限装,还有别的方法吗?
[uidt5109@jz002 home]$ rubby
-bash: rubby: command not found
-
- 帖子: 16
- 注册时间: 2010-07-09 20:28
Re: 求脚本!!!!
[uidt5109@jz002 home]$ ruby
-bash: ruby: command not found
-bash: ruby: command not found
-
- 帖子: 229
- 注册时间: 2007-07-01 17:36
- 系统: (En):System
- 来自: (En):address
- 联系:
Re: 求脚本!!!!
代码: 全选
kent$ echo "y1=compt_a
y2=compt_b
y3=compt_c"|sed -r -e's/=/="/' -e 's/$/"/'|awk -F'=' '{a[NR]=$2}END{for(i in a) x = x a[i]; gsub(/""/,"\",\"",x); print "var=" toupper(x)}'
var="COMPT_A","COMPT_B","COMPT_C"
---
regards,
Kent
regards,
Kent
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 求脚本!!!!
tr a-z A-Z <a.dat|sed ':a;N;s/\n*Y[0-9]*=/","/g;s/^",/ss=/;s/$/"/;ta'
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
- cuihao
- 帖子: 4793
- 注册时间: 2008-07-24 11:33
- 来自: 郑州
- 联系:
Re: 求脚本!!!!
既然有人用ruby,我也用一用Python2:
单一命令:
代码: 全选
print 'ss="%s"' % '","'.join([line.split(‘=’)[1].strip().upper() for line in open('a.dat')])
代码: 全选
python2 -c "print 'ss=\"%s\"' % '\",\"'.join([line.split('=')[1].strip().upper() for line in open('a.dat')])"
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 蓝红黄蓝绿红
Site: CUIHAO.TK Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
Site: CUIHAO.TK Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 求脚本!!!!
用变量:
ss='';for i in `tr a-z A-Z <a.dat|cut -d= -f2`;do ss=${ss:+$ss'","'}$i;done;echo 'ss="'$ss'"'
ss='';for i in `tr a-z A-Z <a.dat|cut -d= -f2`;do ss=${ss:+$ss'","'}$i;done;echo 'ss="'$ss'"'
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- 我就是我2
- 帖子: 1215
- 注册时间: 2008-12-13 10:55
- 来自: the Earth
- 联系:
Re: 求脚本!!!!
这么多人写。有压力啊。
不会ruby、python
[bash]data=$(grep "compt" a.dat | awk -F "=" '{print "\"" $2 "\"," }' | tr a-z A-Z | tr -d '\n' | sed 's/,$//')
echo "ss=$data"
[/bash]

不会ruby、python
[bash]data=$(grep "compt" a.dat | awk -F "=" '{print "\"" $2 "\"," }' | tr a-z A-Z | tr -d '\n' | sed 's/,$//')
echo "ss=$data"
[/bash]
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”
自然灋則
dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”
自然灋則
dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 求脚本!!!!
花样翻新,很high的。
用变量直接打印:
ss='';for i in `cut -d= -f2 <1|tr a-z A-Z`;do echo -n ${ss:-'ss="'}${ss:+'","'};ss=$i;done;echo $ss'"'
用sed的简洁方法:
sed 's/ /","/g' <<<'ss="'$(cut -d= -f2 <1|tr a-z A-Z)'"'
用变量直接打印:
ss='';for i in `cut -d= -f2 <1|tr a-z A-Z`;do echo -n ${ss:-'ss="'}${ss:+'","'};ss=$i;done;echo $ss'"'
用sed的简洁方法:
sed 's/ /","/g' <<<'ss="'$(cut -d= -f2 <1|tr a-z A-Z)'"'
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
- 帖子: 16
- 注册时间: 2010-07-09 20:28
Re: 求脚本!!!!
fnan 写了:用变量:
ss='';for i in `tr a-z A-Z <a.dat|cut -d= -f2`;do ss=${ss:+$ss'","'}$i;done;echo 'ss="'$ss'"'
大哥,我这里不行啊?
[uidt5100@home]$ ss='';for i in `tr a-z A-Z <a.dat|cut -d= -f2`;do ss=${ss:+$ss'","'}$i;done;echo 'ss="'$ss'"'
","COMPT_C","
[uidt5100@home]$
-
- 帖子: 16
- 注册时间: 2010-07-09 20:28
Re: 求脚本!!!!
这个也不行?fnan 写了:花样翻新,很high的。
用变量直接打印:
ss='';for i in `cut -d= -f2 <1|tr a-z A-Z`;do echo -n ${ss:-'ss="'}${ss:+'","'};ss=$i;done;echo $ss'"'
用sed的简洁方法:
sed 's/ /","/g' <<<'ss="'$(cut -d= -f2 <1|tr a-z A-Z)'"'
[uidt5100@home]$ ss='';for i in `cut -d= -f2 <a.dat|tr a-z A-Z`;do echo -n ${ss:-'ss="'}${ss:+'","'};ss=$i;done;echo $ss'"'
","COMPT_C","
[uidt5100@home]$