我有一个文本文件,其中包含由管道分隔的 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.
现在,我使用 shell 脚本从该文本文件中提取值并将其存储在 shell 变量中,现在我想将 shell 变量值替换为 HTML 文件中的变量。在此替换中,我想将文本文件(存储在 shell 变量中)中的值中遇到的新行替换为,<br /> tag
以便在我的 HTML 文件中,输出的格式应与文本文件中所有 3 个部分的输入格式相同。
我用于提取和替换值的 shell 脚本是:
#! /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 部分中看到。
注意:在上面的脚本与会者中,议程和 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 )