我的文字像這樣的斑點:更換使用第n個字符UNIX魔術
ABCD,閃避,geff,HIJ,KLMN,NOP,QRS,TUV,WXYZ,....
你能人們幫助我用awk或任何unix(mac)魔法替換第四個逗號(,)換行符!
我的文字像這樣的斑點:更換使用第n個字符UNIX魔術
ABCD,閃避,geff,HIJ,KLMN,NOP,QRS,TUV,WXYZ,....
你能人們幫助我用awk或任何unix(mac)魔法替換第四個逗號(,)換行符!
只改變第四逗號:
sed 's/\(\([^,]*,\)\{3\}[^,]*\),/\1\n/'
(注:急於顯示a much cooler way to do this):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
reference。
簡而言之,該命令將查找模式
((non-commas - comma) (3 times) - (non-commas)) comma
,並更改爲
"whatever is in outer brackets" + newline.
要更換4 ,
次數,你可以使用:
echo "abcd,def,geff,hij,klmn,nop,qrs,tuv,wxyz,...." | sed 's/,/\n/4'
要更換每第四次使用:
echo "abcd,def,geff,hij,klmn,nop,qrs,tuv,wxyz,...." | sed 's/\(\([^,]*,\)\{3\}[^,]*\),/\1\n/g'
哇,這真是太棒了!它的工作雖然沒有顯示新的路線。它只是顯示「n」而不是換行。是因爲我使用的是MAC嗎? – 2012-07-20 09:18:19
該死的,我還不知道多少更酷的選項?你在哪裏學習這些? – 2012-07-20 09:20:07
@LevLevitsky http://www.grymoire.com/Unix/Sed.html是我見過的最好的'sed'導師。 – rush 2012-07-20 09:22:41
它的工作原理是因爲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 ' ' ','
真棒!它的工作雖然沒有顯示新的路線。它只是顯示「n」而不是換行 – 2012-07-20 09:17:18
@PH。我想這是一個Mac問題。根據[這篇文章](https://cafenate.wordpress.com/2010/12/05/newlines-in-sed-on-mac/),你可以嘗試像'sed's/\(\([ ^,] *,\)\ {3 \} [^,] * \),/ \ 1'$'\ n/g''來解決它。 – 2012-07-20 09:23:33
謝謝!我忘了我已經替換了這個笨拙的mac sed!非常棒! – 2012-07-20 10:50:47