Unix 스크립트: ':'을 사용하여 다른 파일에 쓰는 데 실패했습니다.

Unix 스크립트: ':'을 사용하여 다른 파일에 쓰는 데 실패했습니다.

파일에 다음과 같은 기록이 있습니다(및 기타 많은 기록).

9460    xyz            abc (lmn):1027739543798. Taxpayer's identification number (INN): 123. For all IIB. 2016/02/03

키워드를 검색해야 해요IIB. 일치하면 전체 레코드를 가져와서 다른 파일에 써야 합니다.

아래는 이미 존재하는 코드입니다. 이 코드는 작동하지 않습니다. 이 코드의 문제점은 정확히 일치하는 레코드를 얻을 때 ":" 뒤의 텍스트를 무시하고 다른 파일에 쓴다는 것입니다.

cat keyword.cfg | while read KwdName
do
    echo "KEYWORD:"${KwdName} //This prints IIB
    grep "^${KwdName}\|${KwdName}\|~${KwdName}~\|:${KwdName}$\|:${KwdName}~" ${mainFileWithListOfRecords} | awk -F ":" '{print $1}' >> ${destinationFile}
done

따라서 대상 파일에 다음 레코드를 쓰지 마십시오.

9460    xyz            abc (lmn):1027739543798. Taxpayer's identification number (INN): 123. For all IIB. 2016/02/03

그냥 쓰는 것인데,

9460    xyz            abc (lmn)

cat -vte mainFileWithListOfRecords다음과 같은 출력을 제공합니다

9460^IMEZHPROMBANK^I^ICJSC ;IIB;~ Moscow, (lmn): 1027739543798. Taxpayer's identification number (INN): 123. For all IIB. 2016/02/031#msid=s1448434872350^IC1^I2000/12/28^I2015/11/26^I^I$

답변1

각 줄에서 문자열을 찾아 IIB해당 단어가 포함된 줄을 새 파일에 복사하기만 하면 다음과 같이 할 수 있습니다.

grep -w IIB inputfile >outputfile

( 또는 대신 ) 완전한 단어를 강제 -wgrep찾습니다 .IIBIIIBIIB2

관련 정보