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년 전에 이러한 파이프를 발명할 때 의도한 대로 함께 작동하는 명령 세트를 선택하려고 합니다.sed
awk
답변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