向 linux 中的文件内容添加新值
add new values to a file content in linux
有 2 个文件(fileA、FileB)
文件A
015638|00001059
015639|00001059
015640|00001059
015644|00001158
015645|00005795
015646|00000721
015648|00003804
015649|00005795
文件B
05052015
想要(注意:最后一个值只是今天的日期)
015638|00001059|05052015|03312015
015639|00001059|05052015|03312015
015640|00001059|05052015|03312015
015644|00001158|05052015|03312015
015645|00005795|05052015|03312015
015646|00000721|05052015|03312015
015648|00003804|05052015|03312015
015649|00005795|05052015|03312015
我有一个有效的代码,但有点惊讶为什么有一个 .在 $ (在 sed 语句中)让它工作之前。
sed "s/.$/|$(cat FileB)|$(date +"%m%d%Y")/" FileA
任何人都可以解释为什么它有效吗?除了 sed 语句之外,我也对其他解决方案持开放态度。谢谢
Can anyone explain why it worked?
我没有工作。该点 (.
) 匹配最后一个字符,并且在您替换时,该字符将被删除:
015638|0000105|05052015|03312015
015639|0000105|05052015|03312015
...
^oops
如其他答案所示,它无法正常工作,因为它正在删除 FileA 中每一行的最后一个字符。
但是,删除 .
会得到您想要的结果:
sed "s/$/|$(cat FileB)|$(date +"%m%d%Y")/" FileA
即把line end
($
)替换成FileB
的内容(文件只有1行),date
用[=16=分隔].
sed "s/[^0-9]*$/|$(head -1 FileB)|$(date +"%m%d%Y")/" FileA
可能更安全,并且以您捕获的这段代码的方式
- 删除任何非数字最后一个字符(space,制表符,...)
- 取 FileB 的 1 行(避免错误的多行)但它是可选的,特别是如果您为此目的自己创建文件来确保单行
有 2 个文件(fileA、FileB)
文件A
015638|00001059
015639|00001059
015640|00001059
015644|00001158
015645|00005795
015646|00000721
015648|00003804
015649|00005795
文件B
05052015
想要(注意:最后一个值只是今天的日期)
015638|00001059|05052015|03312015
015639|00001059|05052015|03312015
015640|00001059|05052015|03312015
015644|00001158|05052015|03312015
015645|00005795|05052015|03312015
015646|00000721|05052015|03312015
015648|00003804|05052015|03312015
015649|00005795|05052015|03312015
我有一个有效的代码,但有点惊讶为什么有一个 .在 $ (在 sed 语句中)让它工作之前。
sed "s/.$/|$(cat FileB)|$(date +"%m%d%Y")/" FileA
任何人都可以解释为什么它有效吗?除了 sed 语句之外,我也对其他解决方案持开放态度。谢谢
Can anyone explain why it worked?
我没有工作。该点 (.
) 匹配最后一个字符,并且在您替换时,该字符将被删除:
015638|0000105|05052015|03312015
015639|0000105|05052015|03312015
...
^oops
如其他答案所示,它无法正常工作,因为它正在删除 FileA 中每一行的最后一个字符。
但是,删除 .
会得到您想要的结果:
sed "s/$/|$(cat FileB)|$(date +"%m%d%Y")/" FileA
即把line end
($
)替换成FileB
的内容(文件只有1行),date
用[=16=分隔].
sed "s/[^0-9]*$/|$(head -1 FileB)|$(date +"%m%d%Y")/" FileA
可能更安全,并且以您捕获的这段代码的方式 - 删除任何非数字最后一个字符(space,制表符,...) - 取 FileB 的 1 行(避免错误的多行)但它是可选的,特别是如果您为此目的自己创建文件来确保单行