텍스트 파일이 있고 위의 모든 줄을 추출하고 싶습니다! --- 주석 ---! 줄 번호를 기반으로하지 않고 새 파일에 추가합니다 (단, 주석을 확인하는 것). 어떻게하면 좋을까요? 당신 나오지 프로그램이 초기 중지 된 경우셸 도구를 사용하여 파일의 일부분을 추출하십시오.
test123
bob
ted
mouse
qwerty
!--- comment ---!
123456
098786
텍스트 파일이 있고 위의 모든 줄을 추출하고 싶습니다! --- 주석 ---! 줄 번호를 기반으로하지 않고 새 파일에 추가합니다 (단, 주석을 확인하는 것). 어떻게하면 좋을까요? 당신 나오지 프로그램이 초기 중지 된 경우셸 도구를 사용하여 파일의 일부분을 추출하십시오.
test123
bob
ted
mouse
qwerty
!--- comment ---!
123456
098786
sed -n '/^!--- comment ---!$/q;p' somefile.txt
파일의 경우, 그것은 중요하지 않습니다; 파이프 입력의 경우, 일찍 중지하면 일부 프로그램이 화가납니다. 사람들을 위해, 당신은 이후 주석에서 삭제해야합니다 :
sed '/^!--- comment ---!$/,$d' somefile.txt
당신이 정말로 쉘 도구보다는 떠들썩한 파티를 사용해야하는 경우와 같은 나오지으로, 다음 :
x=1
while read line
do
if [ "$line" = "!--- comment ---!" ]
then x=0 # Or break
elif [ $x = 1 ]
then echo "$line"
fi
done < somefile.txt
그 코드는 보른과 함께 작동하며 Korn 셸을 사용하고 있으며 Bourne 셸 (예 : POSIX 호환 셸)을 기반으로하는 거의 모든 셸에서 작동 할 것으로 기대합니다.
사용은 나오지도, 또는 while loop :
while read line
do
if [[ $line = '!--- comment ---!' ]];
then
break;
else
echo $line;
fi;
done <input.txt> output.txt
awk '/!--- comment ---!/ {exit} 1' somefile.txt
댓글이 변수 인 경우 :
이awk -v comment="$comment_goes_here" '$0 ~ comment {exit} 1' somefile.txt
후행 1
은 단순히 모든 기본 동작 (인쇄)를 사용하는 AWK 지시 달리 일치하지 않는 행.