머리글과 꼬리만 사용하여 특정 줄 표시

머리글과 꼬리만 사용하여 특정 줄 표시

headand 명령을 사용하여 파일의 3행과 7행만 표시하고 싶습니다 tail(3행과 7행 사이의 행은 표시하고 싶지 않습니다).

답변1

셸에서 MULTIOS 도구를 사용합니다 zsh.

$ head -n 7 file | tail -n 5 > >( head -n 1 ) > >( tail -n 1 )
line 3
line 7

즉, 3~7행 추출을 사용한 head -n 7 file | tail -n 5다음 그 안의 첫 번째 행과 마지막 행을 가져옵니다.

에서 bash이는 다음과 같습니다.

$ head -n 7 file | tail -n 5 | tee >( head -n 1 ) | tail -n 1 
line 3
line 7

데이터를 복사 하는데도 사용됩니다 tee.

답변2

head -n3 input | tail -n1; head -n7 input | tail -n1

head처음 3개 행을 가져온 다음 tail마지막 1개 행만 가져오는 데 사용합니다 . 그런 다음 head처음 7개 행과 tail마지막 1개 행만 가져오는 데 사용합니다 .

실제로는 두 개의 명령이 로 구분되어 있으며 ;단일 명령일 수도 있지만 어떻게 될지는 잘 모르겠습니다.

다음 을 사용하는 것이 더 나을 수도 있습니다 sed.

sed -n '3p;7p' input

단일 명령이 필요한 경우 고유한 명령(함수)을 만듭니다.

get_lines () {
    local input=$1
    shift
    for line; do
        head -n "$line" "$input" | tail -n 1
    done
}

다음과 같이 호출할 수 있습니다.

$ get_lines input 3 7
This is line 3
This is line 7

input파일 이름은 어디에 있습니까? 또한 원하는 만큼의 줄 번호도 허용됩니다.

$ get_lines input 1 3 5 7 9
This is line 1
This is line 3
This is line 5
This is line 7
This is line 9

관련 정보