파일의 열 2에서 문자열 일부를 제거하는 방법

파일의 열 2에서 문자열 일부를 제거하는 방법

입력하다:

4857544398A7CB9C(HWTC98A7CB9C); AHH-ABN-19-2-59-0720000000-amir3456; 129

원하는 출력:

4857544398A7CB9C(HWTC98A7CB9C),amirzain,129

-또는 임의의 명령을 사용하여 sed2열의 마지막 하이픈( ) 앞의 모든 항목을 제거하고 싶습니다 .

답변1

"열 2의 마지막 하이픈(-) 앞에 있는 모든 항목을 제거하고 싶습니다."라는 질문의 내용을 정말로 원한다면 다음 명령을 사용할 수 있습니다.

$ awk '{sub(/.*-/,"",$2)}1' file
4857544398A7CB9C(HWTC98A7CB9C); amirzain; 129

2열의 마지막 하이픈 앞의 모든 항목을 제거 하고 세미콜론을 콜론으로 변경하는 등 출력을 표시하려면 다음 명령을 사용할 수 amirzain있습니다 .Amirzain

$ perl -lne '@F=split(/; /); $F[1] =~s/^.+-(.)/\U$1/; print join ",",@F' file
4857544398A7CB9C(HWTC98A7CB9C),Amirzain,129

답변2

사용:

awk 'BEGIN{FS=";";OFS=","}{n=split($2, seq, "-");$2=seq[n];print}' <file>

산출:

4857544398A7CB9C(HWTC98A7CB9C),amirzain, 129

답변3

A두 번째 열의 대문자는 우연이고 ,출력의 대체는 의도적인 것이라고 가정합니다 .;

echo '4857544398A7CB9C(HWTC98A7CB9C); AHH-ABN-19-2-59-0720000000-amirzain; 129'|sed -r 's/^([^;]+); .*-([^;]+); (.*)/\1,\2,\3/' 
4857544398A7CB9C(HWTC98A7CB9C),amirzain,129

전체 파일에서 사용하려면 ised의 플래그에 a를 추가하세요.

sed -ri 's/^([^;]+); .*-([^;]+); (.*)/\1,\2,\3/' file

관련 정보