2017-02-08 1 views
0

1 열의 각 문자열의 마지막 번호를 잘라내어 (단락 기호 _) 새 열 (열 3)로 옮기는 데 사용할 수있는 sed/awk 명령은 무엇입니까? 각 행의 마지막 문자를 새로운 열로 옮깁니다.

$ head -3 test1.bed 
HLA:HLA00001_A*01:01:01:01_3503 1 
HLA:HLA02169_A*01:01:01:02N_3291 1 
HLA:HLA14798_A*01:01:01:03_2903 1 

이 될해야 예를 들어

:

$ head -3 test1.bed 
HLA:HLA00001_A*01:01:01:01 1 3503 
HLA:HLA02169_A*01:01:01:02N 1 3291 
HLA:HLA14798_A*01:01:01:03 1 2903 

답변

0
$ sed -E 's/(.*)_([0-9]+)(.*)/\1\3 \2/' file 
HLA:HLA00001_A*01:01:01:01 1 3503 
HLA:HLA02169_A*01:01:01:02N 1 3291 
HLA:HLA14798_A*01:01:01:03 1 2903 

위 OSX 나오지과 새로운 GNU의 SED는 어디 -E = 확장 regexps '에 함께 작동합니다. 어떤 나오지도 함께 :

$ sed 's/\(.*\)_\([0-9]*\)\(.*\)/\1\3 \2/' file 
HLA:HLA00001_A*01:01:01:01 1 3503 
HLA:HLA02169_A*01:01:01:02N 1 3291 
HLA:HLA14798_A*01:01:01:03 1 2903 
+0

두 작업 - 감사합니다! – emblake

+0

죄송하지만, 첫 번째 열에 마지막 숫자 ('_ '포함)를 유지하고 싶다면 sed 문은 무엇입니까? – emblake

+0

'[0-9]'바로 앞에있는 괄호 안의'_'을 이동하십시오. –

0
awk -F'[_ ]' '{print $1"_"$2,$4,$5,$3}' file 

HLA:HLA00001_A*01:01:01:01 1 3503 
HLA:HLA02169_A*01:01:01:02N 1 3291 
HLA:HLA14798_A*01:01:01:03 1 2903 
관련 문제