2012-05-12 4 views

답변

1

이전 답변에서 일부 코드를 촬영, 당신은이 코드를 사용할 수 있습니다 :이 코드가 작동하지

while read word; do 
    if [[ $word =~ ^(....)(.)$ ]]; then 
     filename="yy/${BASH_REMATCH[1]}.txt" 
     letter=${BASH_REMATCH[2]} 
     [[ -f $filename ]] && sed -i.bak -n "/^ *csh.*$letter/p" $filename 
    fi 
done < xx.txt 
+0

답변 해 주셔서 대단히 감사합니다. "csh"로 시작하는 다른 줄을 지우고 싶습니다. (예 : "Csh"로 시작하는 "csh"로 시작하는 다른 줄을 지우십시오.) 원래의 파일 대신 인쇄하십시오. 코드를 어떻게 바꿀 수 있습니까? – darwin

+0

위의 수정 된 답변을 확인하십시오. – anubhava

+0

이제 작동하지 않습니다. – darwin

1

이 항목에 대한 사양을 제공하는 이전 질문의 정보를 전달해야합니다.

이 당신을 위해 작동 할 수있다 : 그들은 cat 에디션이 함께있는 것처럼

awk '$3 == "A"' inputfile 

당신은 여러 개의 파일을 처리하기 위해, 아마도 * 글로브와 함께 "inputfile의"를 대체 할 수 있습니다.

여러 파일을 어떻게 처리 할지를 명확하게 나타내지 않고도 할 수있는 최선의 방법입니다.

1

이 당신을 위해 작동 될 수 있습니다

sed '/^ *chs.*A/!d' file 
+0

합니다. 이전 질문의 코드가 제대로 작동하고있었습니다. 감사. – darwin

+0

당신이 원하는 것이 앞의 질문과 반대이면,''sed 's *' '(* \) \ (. \) $ \ sed -i.bak "/^* csh. * \ 2/! d "yy/\ 1.txt |" xx.txt | 이 법안에 꼭 맞아야한다. N.B. '! '는 조건을 무효화합니다. – potong

관련 문제