删除空格直到我们找到逗号,但这应该开始跳过文件每一行中的第一个逗号
Remove whitespaces till we find comma, but this should start skipping first comma in each line of a file
我正在学习 sed 和 awk 命令,尝试了一些复杂的逻辑,但无法获得以下解决方案。
文件内容:
This is apple,apple.com 443,apple2.com 80,apple3.com 232,
We talk on 1 banana,banana.com 80,banannna.com 23,
take 5 grape,grape5.com 23,
当我尝试
$ cat sample.txt | sed -e 's/[[:space:]][^,]*,/,/g'
,apple.com,apple2.com,apple3.com,
,banana.com,banannna.com,
,grape5.com,
没问题,但我想跳过每行中第一个逗号的 sed
,所以预期输出是
This is apple,apple.com,apple2.com,apple3.com,
We talk on 1 banana,banana.com,banannna.com,
take 5 grape,grape5.com,
感谢任何帮助。
如果您正在使用 GNU sed
,您可以执行类似
的操作
sed -e 's/[[:space:]][^,]*,/,/2g' file
其中 2g
指定类似从 2nd
出现开始替换和 g
在其余出现之后进行替换。
上述命令的输出。
sed -e 's/[[:space:]][^,]*,/,/2g' file
This is apple,apple.com,apple2.com,apple3.com,
We talk on 1 banana,banana.com,banannna.com,
take 5 grape,grape5.com,
g
Apply the replacement to all matches to the regexp, not just the first.
number
Only replace the numberth match of the regexp.
awk '{gsub(/[ ]+/," ")gsub(/com [0-9]+/,"com")}1' file
This is apple,apple.com,apple2.com,apple3.com,
We talk on 1 banana,banana.com,banannna.com,
take 5 grape,grape5.com,
第一个 gsub 删除多余的 space,下一个删除 com 和逗号之间不需要的数字。
我正在学习 sed 和 awk 命令,尝试了一些复杂的逻辑,但无法获得以下解决方案。
文件内容:
This is apple,apple.com 443,apple2.com 80,apple3.com 232,
We talk on 1 banana,banana.com 80,banannna.com 23,
take 5 grape,grape5.com 23,
当我尝试
$ cat sample.txt | sed -e 's/[[:space:]][^,]*,/,/g'
,apple.com,apple2.com,apple3.com,
,banana.com,banannna.com,
,grape5.com,
没问题,但我想跳过每行中第一个逗号的 sed
,所以预期输出是
This is apple,apple.com,apple2.com,apple3.com,
We talk on 1 banana,banana.com,banannna.com,
take 5 grape,grape5.com,
感谢任何帮助。
如果您正在使用 GNU sed
,您可以执行类似
sed -e 's/[[:space:]][^,]*,/,/2g' file
其中 2g
指定类似从 2nd
出现开始替换和 g
在其余出现之后进行替换。
上述命令的输出。
sed -e 's/[[:space:]][^,]*,/,/2g' file
This is apple,apple.com,apple2.com,apple3.com,
We talk on 1 banana,banana.com,banannna.com,
take 5 grape,grape5.com,
g Apply the replacement to all matches to the regexp, not just the first.
number Only replace the numberth match of the regexp.
awk '{gsub(/[ ]+/," ")gsub(/com [0-9]+/,"com")}1' file
This is apple,apple.com,apple2.com,apple3.com,
We talk on 1 banana,banana.com,banannna.com,
take 5 grape,grape5.com,
第一个 gsub 删除多余的 space,下一个删除 com 和逗号之间不需要的数字。