如何用新的标头和尾部字符串替换目录中所有文件的标头和尾部,但最多只能确定一个字符?

时间:2019-05-14 17:56:34

标签: linux bash awk sed scripting

我在目录中有文件: 例如:

file1
file2

这两个文件的内容如下所示(标题,正文,尾随单词仅供参考):

header: 123xxx   xxx   value=file1id
body: blah blah blah
trailer: 123zzz   zzz   value=file1id

我想运行一个linux命令,该命令将替换目录中所有文件的标题和结尾,直到“ file1id”为止,以便它们看起来如下所示:

header: 321aaa   aaa   value=file1id
body: blah blah blah
trailer: 321bbb   bbb   value=file1id

我可以轻松地找到如何替换Google上文件中的整个标头或预告片,但是我的文件中需要file1id。我需要一些有关如何循环浏览目录中的文件以及将标题和结尾替换为标题和结尾中的特定字符的指导。

我看到了各种各样的sed和awk表达式,它们删除并替换了标题或尾部。

sed -rne 's/(value=)\s+\w+/\1 yyy/gip'

如上所述,我想运行一个linux命令,该命令将替换目录中所有文件的标题和结尾,直到“ file1id”为止,以便它们看起来如下所示:

header: 321aaa   aaa   value=file1id
body: blah blah blah
trailer: 321bbb   bbb   value=file1id

2 个答案:

答案 0 :(得分:2)

sed示例包含两个替换命令,一个用于第一行(标题),一个用于最后一行的尾部(在第二个替换中由$表示)。 -i的{​​{1}}选项可在适当位置编辑文件。

sed

输出:

sed -i '1 s/^.*value=/yoursubstitution value=/; $ s/^.*value=/yoursubstitution value=/'

答案 1 :(得分:0)

您可以从行首(^)匹配到value=

echo 'header: 123xxx   xxx   value=file1id' | sed 's/^.*value=/header: 321aaa   aaa   value=/'
header: 321aaa   aaa   value=file1id