특정 행과 열의 sed/awk

특정 행과 열의 sed/awk

8번째 문자부터 두 번째 줄 전체를 인쇄하고 싶습니다.

예:

1234567890
12 45 7foobar
1234567890

산출:

foobar

sed -n '2p'두 번째 줄 전체를 인쇄하려고 합니다.

답변1

sed를 사용하세요:

sed -n '2s/.\{7\}//p' file

awk를 사용하세요:

awk 'NR==2{print substr($0,8)}' file

답변2

cut8번째 문자 이후의 내용만 가져오는 데 사용됩니다 .

$ sed -n "2p" test | cut -c 8-
foobar

답변3

grep

$ grep -zoP '\A(?:.*\n){1}.{7}\K.*' file | tr -d '\0'

$ grep -m2 ^ file | tail -n 1 | cut -c8-

$ grep -Pom2 '.{7}\K.*' file | tail -n 1

파이썬

$ python3 -c 'print(open("file").read().splitlines()[1][7:])'

진주

$ perl -lne 'print(unpack("x7A*")), last if 2..2' file

sed

$ sed -e '
    /\n/{s/.$//;q;}
    2G;//s/./\n/7;D
  ' file

배쉬 내장 함수

N=1
while IFS= read -r l; do
  case $N in
    2)
      printf '%s\n' "${l:7}"
      break;;
  esac
  (( N++ ))
done < file

피복재:

  • grep은 파일을 후루룩 마시고 첫 번째 줄을 건너뛰고 두 번째 줄의 7자를 건너뛰고 해당 줄의 나머지 문자를 출력 패킷에 넣습니다.

  • grep은 전체 줄인 2개의 일치 항목을 인쇄한 다음 if cut 메서드를 통해 꼬리를 잡고 처음 7자를 자릅니다.

  • Python은 파일을 읽고 여러 줄로 나누고 두 번째 파일을 선택한 다음 8번째 문자를 인쇄합니다.

  • Perl은 두 번째 줄의 압축을 풀고 처음 7자를 무시하고 그 이후의 각 문자를 인쇄합니다.

  • bash 내장 기능은 설명이 필요 없습니다.

답변4

awk와 Python의 두 가지 방법을 통해 완료됨

awk 'NR==2{sub(/^.{7}/,"",$0);print $0}' filename


python

#!/usr/bin/python
import re
m=re.compile(r'.{7}')
k=open('filename','r')
j=[]
for i in k:
    j.append(i.strip())

print re.sub(m,"",j[1])

산출

foobar

관련 정보