linux - 附加到特定行的末尾

标签 linux bash sed awk

希望这对外面的人来说是一个简单的问题。我很确定我知道我需要使用什么,但我不知道如何让它工作。这是问题所在:

我有一个平面文件数据库。让我们称之为 file.db

以下是 file.db 中的一些示例行

#file.db
#
line1|example|sample|name|flag|blah
line2|example|sample|name|flag|blah
line3|example|sample|name|flag|blah

脚本基本上计算 tar 文件的 MD5 哈希。假设 tar 文件的哈希值 = 1234abcd

我需要将 MD5 和和另一个分隔符 (|) 附加到 file.db 中的特定行

例如:

#file.db
#
line1|example|sample|name|flag|blah
line2|example|sample|name|flag|blah|1234abcd
line3|example|sample|name|flag|blah

它附加到的行当然会由一个变量控制。我尝试过使用 sed 和 awk,但就是无法理解语法。

更新

谢谢大佬,解决了。这是我最终做的:

HASH=`md5sum tmp/$URL.tgz | awk '{ print $1 }'`
DBLINE=5
awk -v OFS="|" -v l="$DBLINE" -v h="$HASH" 'NR==l{print $0,h;next}1' databases/$WEB > /tmp/$WEB.tmp && mv /tmp/$WEB.tmp databases/$WEB

谢谢 Kent 和其他所有回答的人。

最佳答案

line=2
awk -v line="$line" 'FNR==line {printf("%s%s\n" $0, "|123abcd") ;next}
                     {print $0}' infile > newfile

关于linux - 附加到特定行的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16011853/

相关文章:

linux - 如何编写脚本来识别和操作终端中的特定驱动器?

mysql - 从 Node js 加载数据 infile 执行缓慢

bash - 进程环境变量的当前值

ubuntu - 将一种模式的出现更改为另一种模式

正则表达式:如何只匹配模式一次?

android - 使用monkeytalk测试android应用程序,录音按钮被禁用

linux - 将 linux 创建的 vm 移植到 windows

bash - 如何在没有交互的情况下安装 Certbot (Let's Encrypt)?

c++ - sed 中用于替换 C++ 的正则表达式包括

php - 为 PHP-FPM 使用 HOSTALIASES