자동으로 생성된 파일이 두 개 있습니다. 파일의 길이가 얼마나 될지 미리 알 수 없습니다.
file#1의 두 번째 줄에서 마지막 줄까지의 첫 번째 단어를 가져와서 $WORDONE이라고 부르고, file#2에서 키워드 뒤에 나타나는 모든 단어를 바꾸는 스크립트를 작성해야 합니다. $KEYWORD라고 하겠습니다. $KEYWORD는 파일 #2에 한 번만 나타납니다.
즉, file#2는 다음과 같아야 합니다.
내용..... $KEYWORD $WORDONE 내용....
또한 처음부터 대부분의 배포판에 포함된 grep, sed 또는 기타 도구를 사용하는 것이 더 나을 것입니다.
답변1
또한 의견을 바탕으로 이 답변을 다시 작성해야 합니다(bash의 코드).
의견에서 제안한 대로, 목표가 file1의 마지막에서 두 번째 줄의 첫 번째 단어를 얻는 것이라면 올바른 방법은 다음과 같습니다.
WORDONE=$(tail -n2 file1 |head -n1 |grep 'REGEX Expression to get 1st word')
#or even this way that i tend to personally prefer:
WORDONE=$(tail -n2 file1 |head -n1 |awk -F"words delimiter" '{print $1}')
#tail will isolate the last two lines and then head will get the first of them = one line before end.
# In case of grep you need to built a regulare expression to give you the first word of this line.
# In case of awk you need to define the delimiter between words in this line (space, comma, etc) and awk will return to you the first word.
#To append wordone to a keyword in file2 you can use:
sed "s#$KEYWORD#$KEYWORD $WORDONE#" file2
#You can use g at the end of sed for global replacement of all $KEYWORD appearances.
#Otherwise only the first $KEYWORD will be replaced.
#To write replacement immediately to the file2 use `sed -i`
추가 팁: 찾고 있는 값이 처음부터 알려진 경우 꼬리와 앞면이 필요하지 않습니다. file1에서 검색어를 간단히 grep할 수 있습니다.
WORD=$(grep "search term" file1)
추신: 기본적으로 gnu grep은 검색어가 발견되면 전체 줄을 반환합니다.
참고:
더 나은 코드를 제공하려면 file1 및 file2의 예를 포함하는 것이 좋습니다. 이는 제안일 뿐이며 실제 범위에서는 결과가 정확하지 않을 수 있습니다.