我的示例文字:
我有一个文件,其中包含以下行(示例)。
Manolito Mapi
MapleStory MEEBO
MEEBO_audio MEEBO_unknown
MEEBO_video MGCP
MGCP_control MGCP_rtp
Microsoft\ Exchange Microsoft\ Exchange_generic
Mig33 MMS
Mojo Move
MPEG MPlus
我想删除单词之间的空格,然后我想输出为:
Manolito
Mapi
MapleStory
MEEBO
MEEBO_audio
MEEBO_unknown
MEEBO_video
MGCP
MGCP_control
MGCP_rtp
Microsoft\ Exchange
Microsoft\ Exchange_generic
Mig33
MMS
Mojo
Move
MPEG
MPlus
请注意,每个单词后都不应有任何训练空间。
请建议我使用任何awk或其他编程脚本来实现此目的。
谢谢,
库马尔
答案 0 :(得分:4)
有些人喜欢这样:
awk -F" +" '{print $1 RS $2}' file
Manolito
Mapi
MapleStory
MEEBO
MEEBO_audio
MEEBO_unknown
MEEBO_video
MGCP
MGCP_control
MGCP_rtp
Microsoft\ Exchange
Microsoft\ Exchange_generic
Mig33
MMS
Mojo
Move
MPEG
MPlus
将字段分隔符FS
设置为两个或多个空格。然后打印出字段1换行字段2
PS这部分不起作用,它吃一个字符......
如果你不分割的空间被转义,那么这应该是:
awk -F'[^\\\\] +' '{print $1"\n"$2}' file
Manolit
Mapi
MapleStor
MEEBO
MEEBO_audi
MEEBO_unknown
MEEBO_vide
MGCP
MGCP_contro
MGCP_rtp
Microsoft\ Exchang
Microsoft\ Exchange_generic
Mig3
MMS
Moj
Move
MPE
MPlus
或者如果可能还有标签:
awk -F'[^\\\\][ \t]+' '{print $1"\n"$2}' file
答案 1 :(得分:2)
我假设您尝试用换行符替换两个或多个空格。如果是,那么你可以使用下面的sed命令。
$ sed 's/[[:space:]]\{2,\}/\n/g' file
Manolito
Mapi
MapleStory
MEEBO
MEEBO_audio
MEEBO_unknown
MEEBO_video
MGCP
MGCP_control
MGCP_rtp
Microsoft\ Exchange
Microsoft\ Exchange_generic
Mig33
MMS
Mojo
Move
MPEG
MPlus
[[:space:]]\{2,\}
匹配两个或多个空格。用换行符替换那些匹配的空格将为您提供所需的输出。
答案 2 :(得分:2)
在Python中:
import re
with open("in.txt","r") as infile, open("out.txt", "w") as outfile:
for line in infile.readlines():
outfile.write('\n'.join(re.split("[^\\\\]\s+",line)))
答案 3 :(得分:1)
使用grep -oP
即可:
grep -oP '\w.*?\w(?= |$)' file
Manolito
Mapi
MapleStory
MEEBO
MEEBO_audio
MEEBO_unknown
MEEBO_video
MGCP
MGCP_control
MGCP_rtp
Microsoft\ Exchange
Microsoft\ Exchange_generic
Mig33
MMS
Mojo
Move
MPEG
MPlus
答案 4 :(得分:1)
另一种awk方式可以使用任意数量的字段,只要您不希望更改为换行符的空格就不需要多个空格。
awk -vORS= '{for(i=1;i<=NF;i++)print $i ($i~/\\$/?" ":"\n")}' file
或者
awk -vRS=" +" 'ORS=/\\/?" ":"\n"' file
Manolito
Mapi
MapleStory
MEEBO
MEEBO_audio
MEEBO_unknown
MEEBO_video
MGCP
MGCP_control
MGCP_rtp
Microsoft\ Exchange
Microsoft\ Exchange_generic
Mig33
MMS
Mojo
Move
MPEG
MPlus