我想在指定的数字行的开头和结尾插入一些文本,就像我有这个txt文件一样:
apple
banana
orange
pineapple
要在第一行开头和结尾插入我使用:
while read -r line
do
sed "1i[text_insert]$line" > outputfile1
done < inputfile
while read -r line
do
sed "1i$line[text_insert2]" > outputfile2
done < outputfile1
我获得:
[text_insert]apple[text_insert2]
banana
orange
pineapple
现在我想在第2行添加一些文字:
[text_insert]apple[text_insert2]
[text_insert3]banana[text_insert4]
orange
pineapple
我尝试使用相同的东西,但这不起作用,我找到的所有其他可能性是在指定的行之前插入新行等文本而不是在指定行中添加它。
答案 0 :(得分:1)
使用awk
:
$ line=3
$ awk -v num=$line 'NR==num{$0="[Insert New Text] " $0 " [Insert End Text]"}1' file
apple
banana
[Insert New Text] orange [Insert End Text]
pineapple
答案 1 :(得分:0)
请尝试以下代码段:
sed '2s/.*/[text_insert] & [text_insert2]/' file.txt
&
具有特殊含义:它是替换 s///
左侧部分的匹配部分
前:
$ cat file.txt
a
b
c
$ sed '2s/.*/[text_insert] & [text_insert2]/' file.txt
a
[text_insert] b [text_insert2]
c
答案 2 :(得分:0)
您可以使用awk
来完成内置NR变量所需的内容。例如:
#!/usr/bin/awk -f
{
if (NR == 1)
printf("[text_insert] %s [text_insert2]\n", $0)
else if (NR == 2)
printf("[text_insert3] %s [text_insert4]\n", $0)
else
print $0
}
答案 3 :(得分:0)
如果awk
是一个选项:
$ cat file.txt
a
b
c
$ awk 'NR==2{printf "[text_insert] %s [text_insert2]\n", $0;next}1' file.txt
a
[text_insert] b [text_insert2]
c