如何为文本文件中的每一行执行str.strip()? Unix的

时间:2013-03-11 03:49:06

标签: string unix sed grep strip

我可以在python中执行以下操作来清理和删除不需要的空格,但可以通过终端通过其他方式完成,例如sedgrep或其他吗?

outfile = open('textstripped.txt','w+','utf8')
for i in open('textfile.txt','r','utf8'):
  print>>outfile, i.strip()

4 个答案:

答案 0 :(得分:2)

在命令行上使用perl

perl -lpe 's/^\s+//; s/\s+$//' file.txt > stripped.txt

答案 1 :(得分:2)

此解决方案基于sed手册页:

sed 'y/\t/ /;s/^ *//;s/ *$//' input > output

http://www.gnu.org/software/sed/manual/sed.html#Centering-lines

说明

  

y\t/ /用空格替换制表符

     

s/^ *//删除了前导空格

     

s/ *$//删除尾随空格

答案 2 :(得分:1)

$ cat input.txt | sed 's/^[ \t]*//;s/[ \t]*$//' > output.txt

这摆脱了前导和尾随空格..

编辑:sed -e "s/^[ \t]+//; s/[ \t]+$//" -i .bk input.txt

这样就可以进行文件编辑,并将备份保存到input.txt.bk(并根据建议保存进程)

答案 3 :(得分:1)

sed -E "s/(^[ \t]+|[ \t]+$)//" < input > output

或者如果您有符合GNU标准的SED版本:

sed -E "s/^\s+|\s+$//g" < in > out

如果您有Mac,我建议您获取homebrew并安装gnu-sed。 然后,alias sed=gsed