한 줄의 두 단어 사이에 있는 텍스트 제외

한 줄의 두 단어 사이에 있는 텍스트 제외

다음과 같은 텍스트가 있습니다.


23660291|2019-12-23T23:13:24.380000|44.0108|11.3048|9.7|SURVEY-INGV||||ML|1.4|--|5 km E Barberino di Mugello (FI)

23610441|2019-12-17T03:40:08.660000|44.0317|11.2825|9.9|SURVEY-INGV||||ML|1.0|--|5 km NE Barberino di Mugello (FI)

23610371|2019-12-17T02:42:40.600000|44.0283|11.2798|9.8|SURVEY-INGV||||ML|1.4|--|4 km NE Barberino di Mugello (FI)

23609901|2019-12-17T00:19:33.840000|44.0362|11.2713|7.6|SURVEY-INGV||||ML|0.6|--|5 km NE Barberino di Mugello (FI)

23596801|2019-12-14T21:47:53.240000|44.0172|11.3043|9.3|SURVEY-INGV||||ML|1.8|--|5 km E Barberino di Mugello (FI)

계속하지만 레이아웃은 동일합니다.

일부 열만 가져오려면 텍스트를 제외해야 합니다. 이와 같은 텍스트

2019-12-23T23:13:24.380000|SURVEY-INGV|1.4|--|5 km E Barberino di Mugello (FI)

여러 번 시도했지만 막혔습니다. 누구든지 나를 도와줄 수 있나요?

답변1

이것이 정확한 텍스트라면 다음과 같이 작동합니다.

awk -F "|" 'BEGIN{OFS="|"} NR==1 {print $2,$6,$11,$12,$13}' file.txt

|첫 번째 부분은 입력 필드 구분자를 awk -F "|". 그런 다음 출력에서 ​​필요에 따라 각 필드나 열 사이의 필드 구분 기호를 인쇄합니다 BEGIN{OFS="|"}. 그런 다음 첫 번째 행이나 레코드의 특정 열을 인쇄합니다 NR==1 {print $2,$6,$11,$12,$13}' file.txt.

산출:

2019-12-23T23:13:24.380000|SURVEY-INGV|1.4|--|5 km E Barberino di Mugello (FI)

답변2

적어도 GNU의 cut경우

cut -d '|' -f 2,6,11-13 text

또는

cut -d '|' --complement -f 1,3-5,7-10 text

작동해야합니다.

답변3

sed "s/\|\{2,\}/|/g" filename| awk '$0 !~/^$/'|awk -F "|" 'OFS="|"{print $2,$6,$8,$9,$10}'

산출

2019-12-23T23:13:24.380000|SURVEY-INGV|1.4|--|5 km E Barberino di Mugello (FI)
2019-12-17T03:40:08.660000|SURVEY-INGV|1.0|--|5 km NE Barberino di Mugello (FI)
2019-12-17T02:42:40.600000|SURVEY-INGV|1.4|--|4 km NE Barberino di Mugello (FI)
2019-12-17T00:19:33.840000|SURVEY-INGV|0.6|--|5 km NE Barberino di Mugello (FI)
2019-12-14T21:47:53.240000|SURVEY-INGV|1.8|--|5 km E Barberino di Mugello (FI)

관련 정보