|를 사용하여 텍스트 파일에서 값을 추출하고 awk 명령을 사용하여 텍스트 파일의 구분 기호로 파이프하고 sed를 사용하여 새 줄을 마커로 바꾸시겠습니까?

|를 사용하여 텍스트 파일에서 값을 추출하고 awk 명령을 사용하여 텍스트 파일의 구분 기호로 파이프하고 sed를 사용하여 새 줄을 마커로 바꾸시겠습니까?

파이프로 구분된 3개의 부분 값이 포함된 텍스트 파일이 있습니다. 내 텍스트 파일:

Saibal,Navnath,Taral,Sagar,Ankit,Prasham,Manika,Arvind,Gaurav,Abhijeet,Rohit,Madhu,Ganesh,Zahoor|
LSCRM:Abhijeet

MCRM:Zahoor

TLGAPI:Bhargav

MOM:Manika|
Prod :
No major activity were scheduled and no issues were reported throughout the week.
Last weekend on Sunday, we performed Full bounce. We are doing so to allow any USDOTT transaction during this window while they do code-fix (they need CRM available at all times).
Coming weekend, we have ordering client Ef deployment and CK External BLM Phase 2 activity scheduled on both APH and STL.

Non-Prod:
Over the week, we released 1710 CT11 K2view to build: 220 and Env TRN3 to 1707 Build:300.

이제 쉘 스크립트를 사용하여 이 텍스트 파일에서 값을 추출하고 이를 쉘 변수에 저장하고 있습니다. 이제 쉘 변수 값을 HTML 파일의 변수로 바꾸고 싶습니다. 이 대체에서는 <br /> tagHTML 파일에서 출력이 모든 3개 섹션에 대해 텍스트 파일과 같은 형식이 되도록 텍스트 파일(셸 변수에 저장됨)의 값에서 발견된 새 줄을 바꾸고 싶습니다. 입력 형식 는 ~와 마찬가지로.

값을 추출하고 바꾸는 데 사용하는 쉘 스크립트는 다음과 같습니다.

#! /bin/bash -x
file='/home/websphe/tomcat/webapps/MOM/mom.txt'
file1='/home/websphe/tomcat/webapps/MOM/web/mom.html'
common_path='/home/websphe/tomcat/webapps/MOM/web/'
if test -s $file
   then
cp $file1 $common_path/momcpy.html
attendees=$( awk 'BEGIN { RS = "|" } NR == 1 { print }' $file )
echo "$attendees"
agenda=$( awk 'BEGIN { RS = "|" } NR == 2 { print }' $file )
echo "$agenda"
lscrm=$( awk 'BEGIN { RS = "|" } NR == 3 { print }' $file )
echo "$lscrm"
perl -p -i -e "s#attendees#$attendees#g" $common_path/momcpy.html
perl -p -i -e "s#agenda#$agenda#g" $common_path/momcpy.html | sed -i'' 's|\n|<br/>|' $common_path/momcpy.html
perl -p -i -e "s#lscrm#$lscrm#g" $common_path/momcpy.html | sed -i'' 's|\n|<br/>|' $common_path/momcpy.html

이제 여기에서 참석자 섹션을 볼 수 있습니다. 첫 번째 섹션에는 새 줄이 없기 때문에 보고 싶지 않지만 <br/> tag의제 섹션과 lscrm 섹션에서는 보고 싶습니다. 참고: 위 스크립트 참석자에서 Agenda 및 lscrm은 교체하려는 HTML 파일 테이블의 다른 열에 있는 변수입니다.

perl -p -i -e "s#agenda#$agenda#g" $common_path/momcpy.html | sed -i'' 's|\n|<br/>|' $common_path/momcpy.html

위의 시도를 통해 <br/>태그가 전체 HTML 파일에 삽입되므로 내 HTML 파일의 테이블이 Chrome 또는 IE 브라우저에서 매우 아래쪽으로 정렬됩니다.

<br>전체 HTML 본문 파일 대신 지정된 사용자 입력 텍스트 영역에서만 태그를 가져오려면 위 스크립트에서 어떤 변경을 해야 합니까 ?

답변1

로 교체하시면 됩니다 awk. 바꾸다:

attendees=$( awk 'BEGIN { RS = "|" } NR == 1 { print }' $file )

그리고

attendees=$( awk 'BEGIN { RS = "|" } NR == 1 { print gensub("\n", "<br />", "g") }' $file )

agenda및 에 대해서도 동일한 작업을 수행합니다 lscrm. GNU awk를 사용하고 있고 시작 및/또는 끝을 원하지 않는 경우 <br>RS를 사용할 수 있습니다.

attendees=$( awk 'BEGIN { RS = "\n*\\|\n*" } ...' $file )

관련 정보