awk 시리즈 (10): awk 선별 줄 과 처리 필드 에 정통 한 예제

1571 단어
돌아 가기:
  • Linux 시리즈 글
  • Shell 시리즈 문장
  • Awk 시리즈 글
  • awk 데이터 선별 예시
    줄 을 선별 하 다
    # 1.根据行号筛选
    awk 'NR==2' a.txt   # 筛选出第二行
    awk 'NR>=2' a.txt   # 输出第2行和之后的行
    
    # 2.根据正则表达式筛选整行
    awk '/qq.com/' a.txt       # 输出带有qq.com的行
    awk '$0 ~ /qq.com/' a.txt  # 等价于上面命令
    awk '/^[^@]+$/' a.txt      # 输出不包含@符号的行
    awk '!/@/' a.txt           # 输出不包含@符号的行
    
    # 3.根据字段来筛选行
    awk '($4+0) > 24{print $0}' a.txt  # 输出第4字段大于24的行
    awk '$5 ~ /qq.com/' a.txt   # 输出第5字段包含qq.com的行
    
    # 4.将多个筛选条件结合起来进行筛选
    awk 'NR>=2 && NR<=7' a.txt 
    awk '$3=="male" && $6 ~ /^170/' a.txt       
    awk '$3=="male" || $6 ~ /^170/' a.txt  
    
    # 5.按照范围进行筛选 flip flop
    # pattern1,pattern2{action}
    awk 'NR==2,NR==7' a.txt        # 输出第2到第7行
    awk 'NR==2,$6 ~ /^170/' a.txt

    처리 필드
    필드 를 수정 할 때 가 져 올 수 있 는 연동 효과 에 주의해 야 합 니 다. 즉, OFS 를 사용 하여 $0 을 재 구축 하 는 것 입 니 다.
    awk 'NR>1{$4=$4+5;print $0}' a.txt
    awk 'BEGIN{OFS="-"}NR>1{$4=$4+5;print $0}' a.txt
    awk 'NR>1{$6=$6"*";print $0}' a.txt

    면접
    ifconfig 명령 결과 로 네트워크 카드 를 제외 한 모든 IPv 4 주 소 를 선택 하 십시오.
    # 1.法一:多条件筛选
    ifconfig | awk '/inet / && !($2 ~ /^127/){print $2}'
    
    # 2.法二:按段落读取,然后取IPv4字段
    ifconfig | awk 'BEGIN{RS=""}!/lo/{print $6}'
    
    # 3.法三:按段落读取,每行1字段,然后取IPv4字段
    ifconfig | awk 'BEGIN{RS="";FS="
    "}!/lo/{$0=$2;FS=" ";$0=$0;print $2}'

    좋은 웹페이지 즐겨찾기