2013-10-08 4 views
0

다른 sed 페이지를 보았습니다. 정규식 검색 부분에서 변수가 -i 인 페이지를 찾을 수 없습니다. 나는 파일 myresolv.conf에있는 요청 된 줄을 잘라내려고 노력하고 그 줄 번호를 얻음으로써. 내 수업 5 명이 모두 붙어 :( 어떤 도움이sed -i (regex?) bash 내부 변수 사용

line=$(grep -n "$3" ./myresolv.conf | cut -d: -f1) 

sed -i "$line" ./myresolv.conf 
+0

'줄을 자르다 '라고 할 때'줄 빼기'를 의미합니까? – jkshah

+0

[sed 또는 awk를 사용하지 않고 특정 행을 파일에서 제거] (http://stackoverflow.com/questions/19128876/remove-a-specific-line-from-a-file-without-using-sed) - 또는 - awk) – tripleee

+0

내가 sed 젠체하는 사람 –

답변

1

파일에서 특정 줄을 삭제하려는 것 같습니다. line 변수에 단일 행 번호가 표시되기를 바랍니다 (일치하는 행이 여러 개인 경우 숫자 목록을 얻으므로 나머지 프로세스가 폭발합니다). 당신이 가지고있는 문제는 sed을 먹이로하는 명령이 단순히 줄 번호라는 것입니다. 당신은 그 줄 번호와 함께 할 sed을 지정하지 않았습니다. 그래서, 아마도 당신이 원하는 :

내가 질문을 잘못 이해 한, 당신은 그 줄을 삭제하고자하지 않는, 단순히 그것을 인쇄 할 경우
sed -i "${line}d" file.txt 

, 다음 교체 dp로 ...

+0

줄을 지우고 싶지만 이것은 나를 위해 일하지 않습니다. -e 표현식 # 1, char 2 : 알 수없는 명령 : ' –

+0

아마도'line' 변수에 숫자 이외의 값이 포함되어있을 수 있습니다. 그때...? 아니면'sed'와 같은'-i'에 인수를 원한다면'sed -i bak "3d"file.txt' ... – twalberg

1

난 당신이 cut out line을 말할 때 당신이 remove line 의미, 가정 굉장합니다.

-v 옵션을 grep를 사용해보십시오. 당신이하지 않는 생각 여기 sed이 필요합니다.

grep -v "$3" ./myresolv.conf 

또는 당신이 파일 자체

라인을 삭제하려면
sed -i.bak "/$3/d" ./myresolv.conf 

변경 사항을 넘기기 전에 백업 파일을 만들려면 -i.bak을 사용하는 것이 좋습니다.

+0

을 사용하고 싶다 마침내 정말로 작동하는 대답을 가진 사람. 감사합니다 @jkshah –