Chinaunix

标题: 求:编写去空格的shell [打印本页]

作者: sztanjj    时间: 2004-11-03 12:53
标题: 求:编写去空格的shell
我现在遇到一个问题。
要将文本文件里面的一些空格去掉。而这个文件又非常的大。有800M。
所以想借助于Shell脚来解决。但本人的编写Shell的能力又太差。请大家帮忙。
文件内的内容如下:
"200331120001020102304 ","                      ","200331120001020102231 ","
只要求将"200331120001020102304 " 的这一个空格去掉就可以了。其它的空格保留。
我知到可以用正规表达式来做。但我不会用正规表达式,请各位帮帮忙了。
作者: bitbull    时间: 2004-11-03 13:17
标题: 求:编写去空格的shell

  1. sed 's/"200331120001020102304 "/"200331120001020102304"/g' file>temp
  2. mv temp file
复制代码

作者: bitbull    时间: 2004-11-03 13:18
标题: 求:编写去空格的shell

  1. sed 's/"200331120001020102304 "/"200331120001020102304"/g' file>temp
  2. mv temp file
复制代码

作者: 邵林寺    时间: 2004-11-03 18:55
标题: 求:编写去空格的shell
通用一点:
sed -e 's/[0-9] \"/[0-9]\"/g' txt >temp
mv temp txt
试一下,我可是没有试过
作者: bitbull    时间: 2004-11-03 19:11
标题: 求:编写去空格的shell
楼上没看清楚题目吧,他没要把数字后的空格都替换,就替换那个特定的而已
作者: 網中人    时间: 2004-11-03 23:54
标题: 求:编写去空格的shell
sed 's/ //' file
作者: sztanjj    时间: 2004-11-04 10:39
标题: 求:编写去空格的shell
谢谢各们兄弟的解答,不过还是不能满足我的要求因为在文件中不只是上面的样了, 还有如下的情况。
"20001020102304 "," ","20120001020102231 "
"032adf04aa     "," ","20aa0102231 "
"aldkjf                 ","                     ","2"
上面的情况是:后面不只一个空格。有些有多外空格。而且里面带有数字。
我用sed的命字只能换到特定空格的情况。如
sed 's/ "/"/g' file.txt
但这种情况只换了一后面只有一个空格的。多个空格的还留在那里。
我想用正规表达式的换掉多个空格。我用下面的语句不成功。
sed  's/ {1,9}"/"/g' file.txt


不知到大家有什么好的办法?
作者: 網中人    时间: 2004-11-04 11:11
标题: 求:编写去空格的shell
怎麼跟你之前說的不一樣了?

請問:
1) 你是要:
文件内的内容如下:
"200331120001020102304 "," ","200331120001020102231 ","
只要求将"200331120001020102304 " 的这一个空格去掉就可以了。其它的空格保留。


2) 還是要:
我想用正规表达式的换掉多个空格。

作者: iambuku    时间: 2004-11-04 11:18
标题: 求:编写去空格的shell
嘻嘻。。。找了个笨方法解决我的问题
作者: bitbull    时间: 2004-11-04 12:08
标题: 求:编写去空格的shell
sed 's/  *//g'
作者: 網中人    时间: 2004-11-04 15:14
标题: 求:编写去空格的shell
[quote]原帖由 "bitbull"]sed 's/  *//g'[/quote 发表:


tr -d ' ' 如何?
作者: bitbull    时间: 2004-11-04 18:06
标题: 求:编写去空格的shell
5555555555~学东忘西,又忘了TR的-D
作者: sztanjj    时间: 2004-11-05 10:37
标题: 求:编写去空格的shell
谢谢各位的帮忙,我以经把问题搞定了。其实我上面的
sed 's/ {1,9}"/"/g' file.txt 这个思想是没有错的。只是我的语法错了。应该是。
sed 's/ \{1,9\}"/"/g' file.txt
因为{和}是不可以直接写在表达式里面的。必须用转意符来弄。
作者: 網中人    时间: 2004-11-05 12:04
标题: 求:编写去空格的shell
看來你還是理解不夠透徹啊...
既然 s command 已用了 g 這個 flag,
那麼, 在空白後加 * 或 {1,9} 都是多餘的.

我前面問了你兩個問題, 你都沒回答.
若是第一種, 只去第一個空白, 那就:
sed 's/ //' text.file
若是第二種, 所有空白都去掉, 那就多加個 g 就行:
sed 's/ //g' text.file
作者: sztanjj    时间: 2004-11-11 12:37
标题: 求:编写去空格的shell
網中人说得很对。不过我不是想去掉所有的空格,我可是想去掉空格后面带有"的这种空格。
其实我对Shell了解得差不多。s和g到底用来做什么的我并不了解。不过它确实帮我把问题解决了。
作者: 網中人    时间: 2004-11-11 12:44
标题: 求:编写去空格的shell
哦... 總算知道你要的是啥了...  ^_^

只有了解需求, 才能提出方案.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2