첫 번째부터 시작하여 홀수 줄을 인쇄하십시오. [닫기]

첫 번째부터 시작하여 홀수 줄을 인쇄하십시오. [닫기]

or , &&, ||를 sed사용하지 않고 첫 번째 줄 을 포함하여 파일의 홀수 줄만 인쇄하는 bash 스크립트를 작성하고 싶습니다.awk

답변1

그리고 perl:

$ seq 10 | perl -ne 'print if $.%2'
1
3
5
7
9

입력에 탭이 포함되어 있지 않으면 다음을 수행할 수도 있습니다.

$ seq 10 | paste - - | cut -f1
1
3
5
7
9

GNU 사용 grep:

$ seq 10 | grep -n '^' | LC_ALL=C grep -Po '^\d*[13579]:\K.*'
1
3
5
7
9

어떤 경우 에라도,텍스트를 처리하기 위해 쉘 루프를 사용해서는 안됩니다. 선생님이 이런 이상한 요청을 하길 기대하신다면, 나쁜 습관을 가르쳐줄 다른 선생님을 찾으세요. 쉘의 첫 번째 역할은 다른 명령을 실행하는 것입니다. 쉘 스크립터로서 여러분은 작업에 가장 적합한 명령(here 또는 perl) 을 선택 하거나 Unix 작성자가 약 50년 전에 이러한 파이프를 발명할 때 의도한 대로 함께 작동하는 명령 세트를 선택하려고 합니다.sedawk

답변2

다음을 수행할 수 있습니다.

while IFS= read -r line
do 
    printf "%s\n" "$line"
    IFS= read -r _
done <"file"

다음을 사용해 보세요 seq:

while IFS= read -r line
do 
    printf "%s\n" "$line"
    IFS= read -r _
done < <(seq 10)
1
3
5
7
9

관련 정보