我有一团这样的文字:
abcd,def,geff,hij,klmn,nop,qrs,tuv,wxyz,....
你们能帮我用awk或任何unix(mac)魔法用换行符替换第4个逗号(,)吗?
要替换第 4 次,
出现,您可以使用:
echo "abcd,def,geff,hij,klmn,nop,qrs,tuv,wxyz,...." | sed 's/,/\n/4'
要每 4 次替换一次,请使用:
echo "abcd,def,geff,hij,klmn,nop,qrs,tuv,wxyz,...." | sed 's/\(\([^,]*,\)\{3\}[^,]*\),/\1\n/g'
仅更改第 4 个逗号:
sed 's/\(\([^,]*,\)\{3\}[^,]*\),/\1\n/'
(注意:rush显示了一种更酷的方法):s/,/\n/4
要更改每4 个逗号,请添加g
标志:
$ echo 'abcd,def,geff,hij,klmn,nop,qrs,tuv,wxyz,....' |\
> sed 's/\(\([^,]*,\)\{3\}[^,]*\),/\1\n/g'
abcd,def,geff,hij
klmn,nop,qrs,tuv
wxyz,....
这是一个sed
参考。
简而言之,该命令找到了模式
(( non-commas - comma ) (3 times) - (non-commas)) comma
并将其更改为
"whatever is in outer brackets" + newline.
它之所以有效,是因为默认操作xargs
是/bin/echo
http://unixhelp.ed.ac.uk/CGI/man-cgi?xargs
echo 'abcd,def,geff,hij,klmn,nop,qrs,tuv,wxyz,....' | xargs -d, -n4 | tr ' ' ','