sed命令在匹配字符串后附加文件

时间:2017-10-03 07:04:27

标签: bash sed

如何在字符串

中匹配后添加文件内容

我有一个文件名是 lokesh.sh

#_AdditionalMail:
#_WeekName:
TARGETDIR=`date +'%A'`
LOCKFILE=/tmp/backup_profile_lokesh.tmp
LOGFILE=/var/www/modules/backup/log/lokesh.log
me=`basename "$0"`
volumename=`sudo awk '/mnt/{i++}i==2' /var/www/modules/backup/profiles/"$me"`
chkmount=`sudo mount | grep -w "$volumename"`

在这个文件中,我想添加另一个文件内容。

为Backup.txt

allscript=`ls *.sh | paste -d "," -s`
export IFS=","
for script in $allscript; do
done

我希望在 lokesh.sh < LOGFILE = / var / www / modules / backup / log / lokesh.log 后面添加backup.txt文件内容的内容/ p>

添加文件后的预期输出

#_AdditionalMail:
#_WeekName:
TARGETDIR=`date +'%A'`
LOCKFILE=/tmp/backup_profile_lokesh.tmp
LOGFILE=/var/www/modules/backup/log/lokesh.log
allscript=`ls *.sh | paste -d "," -s`
export IFS=","
for script in $allscript; do
done
me=`basename "$0"`
volumename=`sudo awk '/mnt/{i++}i==2' /var/www/modules/backup/profiles/"$me"`
chkmount=`sudo mount | grep -w "$volumename"`

2 个答案:

答案 0 :(得分:1)

您可以使用r中的sed命令附加从backup.txt读取的文本。 这将发生在带有字符串“LOGFILE”

的行之后
sed '/LOGFILE/ r backup.txt' lokesh.sh

答案 1 :(得分:0)

以下可能会完成您的任务。

awk '/LOGFILE=\/var\/www\/modules\/backup\/log\/lokesh.log/{print;system("cat backup.txt");next} 1' lokesh.sh

说明:只需搜索字符串LOGFILE=/var/www/modules/backup/log/lokesh.log并在其中隐藏/(以删除它的特殊含义),一旦在任何行中找到此字符串然后打印当前行并使用awk的{​​{1}}实用程序,我们可以在其中调用shell命令。在提到system后,使用cat backup.txt命令打印backup.txt文件,这将跳过所有进一步的语句。最后提到1将打印所有行,因此next适用于awk的方法。这里我通过提及condition then action使条件为TRUE并且未指定任何操作,因此默认情况下将发生打印操作(打印当前行)。之后提到lokesh.sh作为Input_file。