Replace 使用sed或awk将空格替换为第一个字
我有这样一个字符串:Replace 使用sed或awk将空格替换为第一个字,replace,awk,sed,Replace,Awk,Sed,我有这样一个字符串: qqqqq zzzz aaaa ttttt 77777 qqqqqzzzzqqqqqaaaaqqqqqtttttqqqqq77777 我需要用第一个单词替换空格。因此,它应该是这样的: qqqqq zzzz aaaa ttttt 77777 qqqqqzzzzqqqqqaaaaqqqqqtttttqqqqq77777 是否可以使用sed或awk执行此操作?此awk单行线将用第一个字段替换所有空格 awk '{OFS=$1;$1=$1}7' file 将产生: qq
qqqqq zzzz aaaa ttttt 77777
qqqqqzzzzqqqqqaaaaqqqqqtttttqqqqq77777
我需要用第一个单词替换空格。因此,它应该是这样的:
qqqqq zzzz aaaa ttttt 77777
qqqqqzzzzqqqqqaaaaqqqqqtttttqqqqq77777
是否可以使用sed或awk执行此操作?此awk单行线将用第一个字段替换所有空格
awk '{OFS=$1;$1=$1}7' file
将产生:
qqqqqqqqqqzzzzqqqqqaaaaqqqqqtttttqqqqq77777
更新:
此行将跳过第一个空格:
awk '{x=$1;sub(FS,"\x98");gsub(FS,x);sub("\x98","")}7' file
这可能适用于您(GNU-sed):
这将用第一个字替换第二个字后的第一个空格,然后删除第一个空格
可以这样写:
sed -r ':a;s/^((\S+) \S+) /\1\2/;ta;s/ //' file
为什么第一个空格没有被
qqqqq
替换?很好!我还考虑过使用awk'{gsub(FS,$1)}1'文件
。@fedorqui您的awk行也很好。然而,这两条线之间有细微差别。如果有连续空格,我的将用一个$1
替换它们,而你的将用一个$1
替换它们。这不是对或错,只是区别。谢谢你的回答,但这不起作用。在我的例子中,我只出现了一次QQ。不止一次