2017-03-27 2 views
1

sed에서 변수로 지정된 (NR == 1 및 특정 줄 번호) 범위에서 주어진 줄을 제거하고 싶습니다. 예를 들어, 1에서 $ ln까지 줄 번호를 제거하고 싶습니다. 여기서 ln은 변수 이름을 나타냅니다. 이것은 내가 한 일입니다. 그러나 그렇지 않습니다. 난 정말 당신의 도움을 주셔서 감사합니다.주어진 범위 사이의 줄을 제거하십시오.

cat $FILENAME | awk ' /TotEng/{ln =FNR}END {print ln} 
echo $ln 
sed -e '1,{$ln}d' $FILENAME 

(1 ~ $ ln) 사이의 줄을 삭제하려면 어떻게해야합니까?

+0

''sed'에서'awk' 변수에 액세스하려고합니까? 그렇다면, 할 수 없습니다. – sat

+0

'awk -v num = "$ ln" 'NR> num'file'은'$ ln + 1' 행에서 인쇄 할 것입니다. – fedorqui

+0

나는 그것을 시도했다. 그러나 빈 파일을 제공합니다. @fedorqui – user2100161

답변

2

는 (NR == 1 및 특정 광고 수)의 범위에서 소정의 선을 제거

하면 단일 sed 명령으로 달성 할 수

sed '1,/TotEng/d' $FILENAME 

1// regexp/ 형태가 시작 부분과 일치합니다. 범위가 넓어 져 초로 번 발생하는 범위가 최대 수식으로 표시됩니다.

관련 문제