有条件地将列添加到文件awk

时间:2018-09-24 11:37:38

标签: awk

我有一个看起来像这样的文件

--- 1:14567 14567 A C 0 0 1
--- 1:32424 34424 A C 0 0 1
rsid124 35245 C G 0 0 1

我想要的是仅在那些没有---的行中添加第一个字段(---

所需的输出将是这样

--- 1:14567 14567 A C 0 0 1
--- 1:32424 34424 A C 0 0 1
--- rsid124 35245 C G 0 0 1

如果更容易,一种解决方法是使用vim或其他文本编辑器删除---,但我想知道如何根据行添加列

2 个答案:

答案 0 :(得分:1)

改写为:

  

我想要的是仅在那些没有字段的行中添加第一个字段---

使用awk相当容易,只需使用:

awk '$1 != "---" { print "--- "$0 } { print }" inputFile >outputFile

这将修改第一列与预期不符的所有行,并以所需的字符串作为前缀。所有其他行将按原样打印。

答案 1 :(得分:0)

如果您不介意使用sed,则可以使用以下方法:

header('Expires: Sun, 01 Jan 2014 00:00:00 GMT');
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

否则,awk版本将类似于:

$ sed -i  's/^[^-]\(.*\)/--- \1/g' file.txt