2017-12-04 1 views
0
cat file1.txt 
set A B 1 
set C D E 2 
set E F 3 3 3 3 3 3 

cat file2.txt 
A;B;1; 
C;D.E;2; 
E;F;3 3 3 3 3 3; 

file1.txt의 형식을 file2.txt로 변환하는 데 도움을 주면 file2.txt가 출력됩니다. 필자는 file1.txt에 3 줄을 입력하고 예제를 만들었지 만 사실이 세 가지 형식과 같은 많은 명령 줄이 있습니다. 셸 명령은 내용에 file1.txt의 3 가지 형식이 포함되어있는 상황에 적응해야합니다.Bash_shell 셸을 사용하여 한 스크립트의 세 가지 형식을 한 번에 다른 스크립트로 변환하십시오.

+1

어떤 규칙이 있습니까? 왜 세미콜론 대신 D와 E 사이에 점이 있습니까? – karakfa

+0

예. "set"과 number를 제외하고 한 줄에 "CDE"와 같은 세 단어가 들어있을 때 두 번째 단어는 세 번째 단어를 점으로 연결합니다. 세미콜론이 아니라 한 줄에 "AB"와 같은 두 단어가 들어있는 경우 " set "과 숫자를 입력하면 두 단어가 세미콜론으로 연결됩니다. –

답변

1
echo "set A B 1 
set C D E 2 
set E F 3 3 3 3 3 3 " | sed -r 's/set (.) /\1;/;s/([A-Z])*(([A-Z]))/\1.\3/g;s/([A-Z]) ([0-9])/\1;\2/;s/ ?$/;/' 
A;B;1; 
C;D.E;2; 
E;F;3 3 3 3 3 3; 
관련 문제