2

我有一团这样的文字:

abcd,def,geff,hij,klmn,nop,qrs,tuv,wxyz,....

你们能帮我用awk或任何unix(mac)魔法用换行符替换第4个逗号(,)吗?

4

3 回答 3

3

要替换第 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'
于 2012-07-20T09:10:48.500 回答
2

仅更改第 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.
于 2012-07-20T09:04:13.257 回答
0

它之所以有效,是因为默认操作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 ' ' ','
于 2012-07-20T09:12:10.200 回答