This topic has been archived. It cannot be replied.
-
工作学习 / IT技术讨论 / 求教:sed/awk 高手how to make the line:
robert.gill,robert.gill@acem.com
to
Robert Gill,robert.gill@acem.com
in a file.
thanks.
-redspider(忙啥!歇着吧!);
2003-8-23
{124}
(#1343847@0)
-
只改这一行吗?或者这只是其中的一行数据?
-m30(m30);
2003-8-23
(#1343852@0)
-
cat file.txt | sed -e 's/^r/R/' -e 's/\.g/.G/'
-m30(m30);
2003-8-23
(#1343867@0)
-
250 lines, different name.
-redspider(忙啥!歇着吧!);
2003-8-24
(#1343892@0)
-
才250行就没必要了,要用SED,估计要54行呢
-oceandeep(北极熊·埋头吃肉的猪);
2003-8-24
(#1343895@0)
-
不明白?
-redspider(忙啥!歇着吧!);
2003-8-24
(#1343918@0)
-
不用sed行吗?先把名字的第一个字符cut出来,用tr换成大写,再paste在一起
-m30(m30);
2003-8-24
(#1343906@0)
-
行。
-redspider(忙啥!歇着吧!);
2003-8-24
(#1343917@0)
-
one line perl. cat /tmp/1.txt | perl -e 'while (<stdin>){ print "\u$1 \u$2$3\n" if /(^\w+?)\s+(\w+?)(.*$)/; }'
-hillman(山大王);
2003-8-24
(#1343977@0)
-
it doesn't work on my system. error: can not find the specific file.
-redspider(忙啥!歇着吧!);
2003-8-25
(#1345620@0)
-
1. 你装Perl了嘛? 2. cat /tmp/1.txt 中, /tmp/1.txt 是你要处理的文件名。你不会真原样照打的吧。// faint
-hillman(山大王);
2003-8-25
(#1345936@0)
-
1. perl installed. 2. file is my file.but i do it under windows, using gnu cat/sed/awk ported to win32.
i tried it under linux, no output, no error, no expected result either.
any idea...
-redspider(忙啥!歇着吧!);
2003-8-27
{155}
(#1346496@0)
-
试试这个:先建一awkfile:
{sub(substr($1,1,1), toupper(substr($1,1,1)), $1);
sub(substr($2,1,1), toupper(substr($2,1,1)), $2);
print($1, $2);}
然后在命令行输入:
cat file | sed -e 's/\./ /' | awk -f awkfile
-bluelamp(蓝灯);
2003-8-25
{205}
(#1345736@0)
-
命令行:cat file | sed -e 's/\./ /' | awk -f awkfile
-bluelamp(蓝灯);
2003-8-25
(#1345740@0)
-
it works at 100%, 利害,感激之情犹如长江之水,绵绵不绝。thanks fly to all whom answered my question as well.
-redspider(忙啥!歇着吧!);
2003-8-27
(#1346508@0)
-
不可能work的,第2步 sed 's/./ /' 就把所有'.' 变成" "了。你的文件里的robert.gill@acem.com 中的 '.' 还在?你的问题是
robert和gill中是个'.',
the final answer should be:
cat yourfile.txt | perl -e 'while(<>){ print "\u$1 \u$2\n" if /(\w+)[\.\s]+(.*$)/; }'
This is the simplest.
Tested on Solaris and linux
原来我的那个你说不行是因为我以为robert 和 gill之间是空格。
现在改成空格或点 [\.\s]* 肯定可以拉
-hillman(山大王);
2003-8-27
{317}
(#1347020@0)
-
我在后面纠正了命令行:sed中's/./ /'应该是's/\./ /'我也不知道为什么第一次输入的时候漏掉了一个\。这里的原因是用sed把第一个.变成一个空格,这样把整个record分成两个field。后面就好办了。
-bluelamp(蓝灯);
2003-8-27
{131}
(#1347047@0)
-
为什么每次我POST的时候在标题里反斜线显示没问题,到了正文里就显示不出来
-bluelamp(蓝灯);
2003-8-27
(#1347051@0)
-
没错,我发现我的#1347027正文中的反斜线也没了
-spaceman(人在江湖);
2003-8-27
(#1347060@0)
-
明白你在说什么了。sed只把第一个.变成空格,如果要把所有.都变成空格那要加一个g:sed 's/\./ /g'
-bluelamp(蓝灯);
2003-8-27
(#1347119@0)
-
That's good, Thanks. I think you can change "print $1 $2;" to just "print" or "print $0", right?
-hillman(山大王);
2003-8-27
(#1347174@0)
-
你说得对,谢谢。
-bluelamp(蓝灯);
2003-8-27
(#1347425@0)
-
cat yourfile.txt | perl -e 'while(<>){ print "u$1 u$2 " if /(\w+)[\.\s]+(.*$)/; }' 我的"\" 也没了。hahaa
-hillman(山大王);
2003-8-27
(#1347178@0)
-
i will try tomorrow, thanks again.
-redspider(忙啥!歇着吧!);
2003-8-27
(#1347561@0)
-
missing a little stuff, output like this...original line:
robert.gill,robert.gill@acem.com
output with the script:
Obert.gill,robert.gill@acem.com
and i want like this:
Robert Gill,robert.gill@acem.com # no dot between the first name and last name.
could you look at on it. thank a lot.
-redspider(忙啥!歇着吧!);
2003-8-27
{263}
(#1346480@0)
-
one-liner: >perl -ne 's/^(\w+)\.(\w+)/\u$1 \u$2/g;print;' your_file
-panda_at_large(阿乡);
2003-8-28
(#1349228@0)