感谢所有人的推荐,它对我有用
我的文件:
File1.sh(bash shell)
prefix_ud=uname;
path_file=/路径/文件脚本;
sed -i "$(grep -n 'uname.*' "$path_file" |tail -1|cut -f1 -d':')a "$prefix_ud" yahoo.com" "$path_file"
sed -i "$(grep -n 'uname.*' "$path_file" |tail -1|cut -f1 -d':')a "$prefix_ud" twitter.com" "$path_file"
文件2 预期输出:
text1
text2
uname google.com
uname gmail.com
uname hotmail.com
uname yahoo.com
uname twitter.com
text3
text4
答案1
丑陋,但我认为这就是OP想要的:
创建一个临时文件,并将“uname”附加到每一行:
sed 's/^/uname /' file_1 > tmp_file
将最后一次出现的“uname...”保存file_2
在变量中:
last=$(awk '/uname.*/{a=$0}END{print a}' file_1)
在最后一次出现后添加以下内容tmp_file
sed -e "/$last/rtmp_file" file_2
输出:
text1
text2
uname google.com
uname gmail.com
uname hotmail.com
uname yahoo.com
uname twitter.com
text3
text4
答案2
您的问题与您的预期输出并不相符。sed
可以处理类似的事情:
sed 's/.*twitter.com/uname & Stuff/;s/.*yahoo.com/uname & Stuff/' file1.txt > file2.txt
&
将附加到末尾,注意文字空间。