我希望打印在“结束”的第二行(或也在结束文件)一个特定的字从一个变量。这将是赞赏有两个方法。
我有一个包含以下内容的文件my_file.txt
:
#Insert the names separeted by space
l.lovre p.jhonson p.backer t.thompson q.ward
我试着正确编码:
#!/bin/bash
filename=/path/my_file.txt
read -p "Insert name: " name
#my attempt
awk -v myvar="$name" 'END{print myvar}' $filename
echo 'Name added'
但是不起作用
我会得到这样的结果:
我的文件.txt:
#Insert the names separeted by space
l.lovre p.jhonson p.backer t.thompson q.ward **name**
先谢了
3条答案
按热度按时间uttx8gqw1#
sed
比较简单:编辑:确保文件中的最后一行不为空。
sczxawaw2#
你可以把它添加到
$0 = $0 FS myvar
文件的第2行的整行中,并且保留你的END
块以便在所有行之后打印它,因为你也想要这样做。如果你不想在所有行之后打印它,删除END
块。name=Michele
的输出:ffdz8vbo3#
默认情况下
awk
不会 * 更新 * 文件。如果你想更新文件,你有两个选择:至于将新名称附加到第2行末尾,或者在当前文件中没有名称时创建新行的问题:一个想法:
注:
1
END {}
块处理发生在文件已被处理 * 之后 *;END {}
模块生成的任何输出都将进入stdoutGNU awk
,则我们可以访问ENDFILE {}
块,该块本质上与END {}
块相同,除了在这种情况下的处理 * 不 * 应用于该文件试用
GNU awk
解决方案: