如何使用 awk 或 sed 搜索单词列表并插入到新行?

如何使用 awk 或 sed 搜索单词列表并插入到新行?

感谢所有人的推荐,它对我有用

我的文件:

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

&将附加到末尾,注意文字空间。

相关内容