텍스트 서식 지정에 awk의 sed 사용 정보

텍스트 서식 지정에 awk의 sed 사용 정보

awktext 를 사용하거나 서식을 지정하고 싶습니다 sed. 내 텍스트는 다음과 같습니다.

H1 (dxfault)
H337 (Unxr)
H1106 (hast)
H1129 (h1129)
H1370 (hlan1370)

H이 편지 와 그 이후의 모든 것을 삭제하고 싶습니다첫 번째 공간, 형식 번호는 다음과 같습니다.1,337,1106,1129,1370

sed두 가지 다른 옵션을 찾았습니다

첫 번째:

sed 'y/H/ /' #for removing H letter in front 

두번째:

sed 's/\s.*$//' #for removing everything after first break "space" 

이러한 명령을 결합하고 숫자 뒤에 쉼표를 추가하려면 어떻게 해야 합니까?

답변1

sed다음을 사용하여 숫자만 가져오고 paste행을 구분 기호로 병합 할 수 있습니다 ,.

sed -E 's/^H([0-9]*).*$/\1/' file | paste -sd,

또는 greppaste:

grep -Po '^H\K[0-9]*' file | paste -sd,
grep -o '^H[0-9]*' file |  cut -c 2- | paste -sd,

당신은 할 수,다음과 같이 개행 문자를 바꾸세요.sed, 하지만 내 생각엔 paste그게 더 쉬운 것 같아.

답변2

또는 sed/ grep사용 tr:

$ sed -E 's/H([0-9]+).*/\1/' file | tr '\n' ,

$ grep -o '[0-9]\+\s' file | tr -s '\n ' ,
  • tr '\n' ,줄 바꿈을 쉼표로 바꾸십시오.
  • tr -s '\n ' ,줄 바꿈과 공백을 쉼표로 바꾸십시오.

답변3

나는 다음 방법으로 그것을했다

sed -e "s/H//g" -e "s/\s.*//g" filename | perl -pne "s/\n/,/g"| sed "s/,$//g"

산출

1,337,1106,1129,1370

답변4

를 사용하세요 sed. 모든 문자를 사용할 수 있다고 가정하지만 공백은 1개만 가능합니다....

sed -E "s/^H(.+) .*$/\1/g" filename | paste -sd,

차라리 grep첫 번째 공백이 발견될 때까지 모든 문자를 허용하고 일치 항목을 추출하도록 선택합니다.

grep -Po "(?<=^H)[^ ]*" filename | paste -sd,

관련 정보