awk 스크립트 실행 후 문자열 잘림
Nov 23 2020
이 코드가 있습니다
BEGIN { FS=OFS=";" }
{ key = $(NF-1) } NR == FNR { for (i=1; i<(NF-1); i++) { if ( !seen[key,$i]++ ) {
map[key] = (key in map ? map[key] OFS : "") $i } } next } { print $0 map[key] }
이런 식으로 코드를 사용합니다
awk -f tst.awk 2.txt 1.txt
두 개의 텍스트 파일이 있습니다
1 .txt
AA;BB;
2 .txt
CC;DD;BB;AA;
이 3 개의 .txt 출력 을 생성하려고합니다.
AA;BB;CC;DD;
하지만이 스크립트는이 스크립트가 AA;BB;
논리 : 위는 배열 인덱스의 해시 조회에서 리터럴 문자열을 사용하므로 입력에 어떤 문자가 있는지는 신경 쓰지 않습니다. 그러나 샘플 출력에 대해 :
의 경우 2 일반 필드에서도있다 .txt 인 1 예 .txt.for BB;AA;
당신은, 즉 하나의 연속을 연결할 필요가 AA;BB;CC;DD;
출력 인 경우 주문이 관련이 없습니다 예를 들어, 필요하지 않은 BB;AA;DD;CC;
경우에만 조건 중복을 피하는 것이 필요하지만 내 스크립트는 이미 이것을 수행합니다.
답변
1 RavinderSingh13 Nov 23 2020 at 08:33
OP의 주석에 따라 두 파일에 모두 한 줄만 있습니다. 따라서 paste
명령을 사용하여 두 파일을 결합한 다음 awk
명령 으로 출력을 처리합니다 .
paste -d';' 1.txt 2.txt |
awk '
BEGIN{
FS=OFS=";"
}
{
for(i=1;i<=NF;i++){
if(!seen[$i]++){ val=(val?val OFS:"")$i }
}
print val
delete seen
val=""
}'