다음과 같은 텍스트가 있습니다.
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)