변수 = 텍스트가 포함된 파일을 읽으려면 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,단어 2,단어 3그리고단어 4.
해당 단어가 존재하는 경우철사알았다철사별도의 파일로.
모든 작업이 완료되면 새 파일에서 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