파일에 다음과 같은 기록이 있습니다(및 기타 많은 기록).
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
( 또는 대신 ) 완전한 단어를 강제 -w
로 grep
찾습니다 .IIB
IIIB
IIB2