파일에 다음 순서가 있습니다.
AA
MUi
MUi-j
MUi-N
ABk
ABk-l
ABk-N
MBk(i)
MBk-l(i)
MBk-l(i-j)
MBk-l(i-N)
MBk-N(i-j)
MBk-N(i-N)
나는 그것을 작은 덩어리로 나누고 싶습니다. 처음 두 문자는 항상 존재하고 나머지는 선택 사항입니다. i,j,k,l은 1에서 191 사이의 숫자입니다. N은 문자 "N"입니다. 다음 결과를 얻고 싶습니다.
AA
MU i
MU i j
MU i N
AB k
AB k l
AB k N
MB k i
MB k l i
MB k l i j
MB k l i N
MB k N i j
MB k N i N
AWK patsplit을 사용하여 이 작업을 수행할 수 있습니까?
답변1
통과하다 sed
:
sed 's/^../& /;s/[-()]/ /g' datafile.dat
답변2
GNU awk 사용:
$ gawk -vFPAT='[A-Z]+|[a-z]' 'NF+=0' file
AA
MU i
MU i j
MU i N
AB k
AB k l
AB k N
MB k i
MB k l i
MB k l i j
MB k l i N
MB k N i j
MB k N i N
NF+=0
기본값을 트리거 하기 위해 0이 아닌 부작용 값에 의존하므로 빈 줄은 건너뜁니다. print
이것이 바람직하지 않은 경우 약간 더 장황한 를 사용할 수 있습니다 {NF+=0} 1
.