다음 문제가 발생합니다.문자열 일치 bash가있는 열 제거
헤더에서 특정 문자열이 포함 된 파일 내의 열을 제거해야합니다. 세미콜론이
file 1
ADM_THO_CVL2000,ZO,AT;BS-CCI-BAL,ARA,EL;BS-TLI-MS,ARA,BG;
1;2;3;
4;5;6;
file 2
BS-CCI-BAL,ARA,EL;BS-TLI-MS,ARA,BG;ADM_THO_CVL2000,OZ,ES;BAG-AL,W,SE;
1;2;3;5;
4;5;6;7;
ADM_THO_CVL2000
이하로 제한 열
예로 행동하면 I가 제거해야하는 특정 문자열이다. 문자열과 그 이후의 열이 제거되면 그 결과는 다음과 같습니다.
BS-CCI-BAL,ARA,EL;BS-TLI-MS,ARA,BG;
2;3;
5;6;
BS-CCI-BAL,ARA,EL;BS-TLI-MS,ARA,BG;BAG-AL,W,SE;
1;2;5;
4;5;7;
인터넷에서 한 번 보았습니다.
awk
내가 수행 한 결과가 예상 한 작업을 수행 할 수 있습니다. 아래 코드를 알려 드리겠습니다 :
awk '
FNR==1{
for(i=1;i<=NF;i++)
if ($i ~ str) {
h=(h)?h FS $i:$i
f=(f)?f FS i:i
}
print h
nf=split(f,fA,FS);next
}
{
for(i=1;i<=nf;i++)
printf("%s%c",$fA[i], (i==nf)?ORS:FS)
}' str=ADM_THO_CVL2000, 'FS=;' filename.csv
나는 여러분의 제안에 귀 기울입니다.
건배
오 잘. 학교 운동처럼 보입니다. 똑같은 질문이 몇 시간 전에 물었다. – devnull
Devnull : 아무것도 찾을 수 없습니다. @ Ashkhan : 답변을 확인하십시오. –
모든 입력은 1 파일에서 2 블록이거나 2 입력 파일이 될 수 있습니까? 중요한 점은 분명합니다. –