원본 데이터에 줄 바꿈이 없는데 열이 내 행 중간에 줄 바꿈을 추가하는 이유는 무엇입니까?

원본 데이터에 줄 바꿈이 없는데 열이 내 행 중간에 줄 바꿈을 추가하는 이유는 무엇입니까?

일부 패킷 필터 로그를 분석 중이며 column -t. 문자열 필드.

내 원본 데이터는 다음과 같은 줄로 구성됩니다.

2018:01:24-09:31:21 asl ulogd[24090]: id="2103" severity="info" sys="SecureNet" sub="ips" name="SYN flood detected" action="SYN flood" fwrule="50018" initf="eth0" srcmac="12:34:56:78:90:ab" dstmac="cd:ef:01:23:45:67" srcip="192.168.1.123" dstip="151.101.65.69" proto="6" length="52" tos="0x00" prec="0x00" ttl="128" srcport="59761" dstport="80" tcpflags="SYN"

다음 방법을 사용하여 데이터를 쉼표로 구분된(CSV) 형식으로 변환합니다.

grep -EHr "192\.168\.1\.123" | 
cut -d':' -f2- | 
awk -F '"' 'BEGIN{
    OFS=","; 
    print "name","action","srcip","srcport","dstip","dstport","protocol","tcpflags"
}
{
    print $10,$12,$22,$36,$24,$38,$26,$(NF-1)
}'

이것은 잘 작동하고 다음과 같은 출력을 생성합니다(IP 주소가 모두 변경되었으며 실제로 이 사이트에 내부 호스트가 넘치지는 않습니다).

name,action,srcip,srcport,dstip,dstport,protocol,tcpflags
SYN flood detected,SYN flood,192.168.1.123,59761,151.101.65.69,80,6,SYN
SYN flood detected,SYN flood,192.168.1.123,59764,151.101.65.69,80,6,SYN
SYN flood detected,SYN flood,192.168.1.123,59769,151.101.65.69,80,6,SYN
SYN flood detected,SYN flood,192.168.1.123,59771,151.101.65.69,80,6,SYN
SYN flood detected,SYN flood,192.168.1.123,59772,151.101.65.69,80,6,SYN
SYN flood detected,SYN flood,192.168.1.123,59890,151.101.65.69,80,6,SYN
SYN flood detected,SYN flood,192.168.1.123,60002,151.101.65.69,80,6,SYN
SYN flood detected,SYN flood,192.168.1.123,60005,151.101.65.69,80,6,SYN
SYN flood detected,SYN flood,192.168.1.123,60006,151.101.65.69,80,6,SYN

어떤 이유로 column표시 테이블 출력( -t)을 사용할 때마다 원래 데이터에 줄바꿈이 없는 첫 번째 열 뒤에 줄바꿈이 추가됩니다. 예를 들어:

$ cat mydata.csv | column -s ',' -t
name
                                action     srcip           srcport  dstip          dstport  protocol  tcpflags
SYN flood detected
                                SYN flood  192.168.1.123   59761    151.101.65.69  80       6         SYN
SYN flood detected
                                SYN flood  192.168.1.123   59764    151.101.65.69  80       6         SYN
SYN flood detected
                                SYN flood  192.168.1.123   59769    151.101.65.69  80       6         SYN

예상 출력은 다음과 같습니다.

name                 action     srcip           srcport  dstip          dstport  protocol  tcpflags
SYN flood detected   SYN flood  192.168.1.123   59761    151.101.65.69  80       6         SYN
SYN flood detected   SYN flood  192.168.1.123   59764    151.101.65.69  80       6         SYN
SYN flood detected   SYN flood  192.168.1.123   59769    151.101.65.69  80       6         SYN

추가 -x해도 column아무런 차이가 없으며 열 수를 지정하지도 않습니다 -c(터미널의 화면 너비가 충분합니다). 원본 데이터에 개행 문자가 없는데 왜 이렇게 합니까?

awkBEGIN 블록에서 생성한 헤더 열 에서도 발생하기 때문에 실제로 내 데이터의 문자라고 생각하지 않습니다 .

답변1

첫 번째 쉼표로 구분된 값이 매우 긴 문자열인 CSV 파일에 행을 삽입하면 문제를 재현할 수 있습니다.

name                                                                                            
                   action     srcip          srcport  dstip          dstport  protocol  tcpflags
SYN flood detected                                                                              
                   SYN flood  192.168.1.123  59761    151.101.65.69  80       6         SYN     
SYN flood detected                                                                              
                   SYN flood  192.168.1.123  59764    151.101.65.69  80       6         SYN     
SYN flood detected                                                                              
                   SYN flood  192.168.1.123  59769    151.101.65.69  80       6         SYN     
SYN flood detected                                                                              
                   SYN flood  192.168.1.123  59771    151.101.65.69  80       6         SYN     
SYN flood detected                                                                              
                   SYN flood  192.168.1.123  59772    151.101.65.69  80       6         SYN     
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx  SYN flood  192.168.1.123  59890    151.101.65.69  80       6         SYN     
SYN flood detected                                                                              
                   SYN flood  192.168.1.123  60002    151.101.65.69  80       6         SYN     
SYN flood detected                                                                              
                   SYN flood  192.168.1.123  60005    151.101.65.69  80       6         SYN     
SYN flood detected                                                                              
                   SYN flood  192.168.1.123  60006    151.101.65.69  80       6         SYN     

name실제 출력에서는 와 열 사이에 줄 바꿈이 없지만 action줄 바꿈(줄이 너무 길어서)은 줄 바꿈 뒤에 들여쓰기가 있는 것처럼 보입니다.

이는 데이터에서 name값이 매우 긴 항목을 찾아야 함을 의미합니다.

관련 정보