온라인에서 특정 기호 뒤의 단어 찾기

온라인에서 특정 기호 뒤의 단어 찾기

변수 = 텍스트가 포함된 파일을 읽으려면 bash 스크립트를 만들어야 합니다. 나에게 필요한 것은 파일을 확인하고 변수 이름을 무시하고 텍스트에서 = 기호 뒤의 단어를 검색하는 스크립트입니다.

thread.give_respect.title = Give respect
thread.receive_respect.title = Gain respect
thread.profile_respect.title = Show my Respect

첫 번째 부분은 변경 가능하므로 단어가 필요하지 않습니다.존경변경되었습니다. = 다음에 하나만 나오네요. 그리고 가능하다면 바꾸고 싶은 단어에 대문자가 있는지 확인해서 그에 맞게 바꿀 수 있도록 하고 싶습니다.

편집하다:

Esteban 귀하의 스크립트를 시도했지만 각 줄의 시작 부분에 ${var가 있는 파일이 생성되었습니다.

무엇을 교체하고 싶은지 묻는 다른 사람에게:

우리는 거대한 파일을 가지고 있습니다문자열 변수 = 해당 텍스트. 예를 들어:

admin.help_text = help
admin.Help_text = Help
home.faq_title = FAQ
...

이러한 파일에는 15,000개 이상의 변수와 해당 값이 포함되어 있습니다. 때때로 우리는단어도착하다다른 것예를 들어:

**help** to **guidance** 
**Help** to **Guidance**
**helper** to **guide**
**Helper** to **Guide**

우리에게 필요한 것:

  1. 파일을 확인하는 스크립트:단어 1,단어 2,단어 3그리고단어 4.

  2. 해당 단어가 존재하는 경우철사알았다철사별도의 파일로.

  3. 모든 작업이 완료되면 새 파일에서 word1, word2 등을 찾아서 바꾸십시오.

예를 들어 모든 변수와 해당 내용을 포함하는 파일(file1.txt)이 있습니다.

admin.help_text = help
admin.Help_text = Help
home.faq_title = FAQ
home.something.help = If you need help please send us email on...

스크립트가 시작되면 다음을 확인합니다.

word1 = help
word2 = Help

찾은 줄을 file2.txt에 저장합니다.

admin.help_text = help
admin.Help_text = Help
home.something.help = If you need help please send us email on...

그런 다음 스크립트는 file2.txt를 확인하고 변경합니다.돕다도착하다가이드그리고 돕다도착하다가이드

admin.help_text = guidance
admin.Help_text = Guidance
home.something.help = If you need guidance please send us email on...

답변1

질문이 편집되었으므로 :

@Apoc 패턴 수가 제한된 경우 다음을 사용하여 1단계와 2단계를 수행할 수 있습니다.

awk -F'=' '$2 ~ /word1|word2|word3|word4/' file1.txt > file2.txt

3단계에서는 원하는 방식과 수행해야 하는 방식에 따라 다릅니다.


나는 다음과 같은 일을 할 것입니다 :

  • 각 행을 반복합니다.
  • 변수 섹션 검색
  • 원하는 대로 변경하세요.
  • 수정된 행을 임시 출력 파일로 인쇄
  • 파일을 임시 파일로 교체

쉘 스크립트에서:


#!/bin/sh

# Loop through lines
cat file.txt | while read line; do
  # Store variable part of the line
  var=`echo $line | sed -r 's/^[^=][ ]?(.*)$/\1/'`

  # Make the modification you want on var
  # ...

  # Print in temporary file the modified line
  echo $line | sed -r 's/^([^=])/\1 ${var}/' >> temporary_file.txt
done

# Replace file by temporary one
mv temporary_file.txt file.txt

답변2

~에서에스테반에 대한 의견답변, 결국 사용된 답변은 다음과 같습니다.

awk -F'=' '$2 ~ /word1|word2|word3|word4/' file1.txt > file2.txt

관련 정보