3

このようなファイル(タブ区切り)がありますが、多くの行があります

1314    0   0   0   0   0   3   1321    -   k63_1878003 1314    0   1314    6   171115067   64288422    64291057    4   12,131,75,1096, 0,12,143,218,   64288422,64288802,64289161,64289961,

string各行の 14 列目に先頭に a を追加する必要がありますが、それ以外はすべて同じにします。これを awk で行うことはできますか、それとも sed の方がよいでしょうか?

4

4 に答える 4

12

を使用しawkます。OFS出力のフィールド間にタブを出力します。

awk 'BEGIN { OFS = "\t" } { $14 = "string" $14; print }' infile
于 2012-06-25T19:06:00.570 に答える
1

これはうまくいくかもしれません(GNU sed):

sed 's/[^\t]*/string&/14' file
于 2012-06-25T19:11:46.757 に答える
1
$ cat file.txt | sed 's/\(\([^\t]\+\t\)\{13\}\)/\1string/g'

言い換えれば、(([^ ] +){13})(タブが続く13個の非タブチャンク)を同じテキストに加えてstring.

于 2012-06-25T18:57:11.770 に答える
0

連結を使用して、AWK のフィールドに追加できます。例えば:

$ echo "foo bar baz" | awk -vOFS=$'\t' '$2 = "quux" $2'
foo quuxbar baz

あなたの場合、代わりにフィールド $13 を使用することは明らかです。アクションではなくパターン部分を変更することで、フィールドの値を置き換え、行のデフォルトの印刷アクションを使用するだけです。

于 2012-06-25T19:03:57.307 に答える