예를 들어, 다음 줄을 포함하는 "athletes" 파일이 있다고 가정해 보겠습니다.
1995-05-30-John-Smith
1992-John-30-Smith-10
형식을 #으로 변경하면서 "Smith"로 끝나는 줄의 처음 2개 단어와 마지막 단어를 나열하는 방법:
따라서 출력은 다음과 같습니다.
1995#05#Smith
답변1
다음과 같이 사용할 수 있습니다 awk
.
awk -F'-' '/Smith$/{print $1"#"$2"#"$NF}' athletes
출력은 다음과 같습니다.
1995#05#Smith
여기서 awk는 로 끝나는 줄을 검색 Smith
하고 그 사이에 가 있는 첫 번째, 두 번째 및 마지막 필드를 인쇄합니다 #
.
사용sed
sed -En 's/([^-]*)-([^-]*).*Smith$/\1#\2#Smith/gp' file.txt
처음 두 개가 발생할 때까지 일치하고 -
수정 후에만 일치하는 줄을 인쇄합니다.
답변2
다음을 시도해 볼 수 있습니다.
grep "Smith$" file | tr "-" "#" | cut -d'#' -f1,2,5
산출:
1995#05#Smith
답변3
다음과 같은 간단한 명령으로도 수행할 수 있습니다.
awk -F "-" '/Smith$/&&OFS="#"{print $1,$2,$NF}' file
산출
1995#05#Smith