Как добавить текущую дату или время в конец каждой строки в файле? - PullRequest
2 голосов
/ 04 октября 2011

У меня есть файл с именем data.txt.

Я хочу добавить текущую дату или время, либо оба в начало или конец каждой строки.

Я пробовал это:

awk -v v1=$var ' { printf("%s,%s\n", $0, v1) } ' data.txt > data.txt

Я пробовал это:

sed "s/$/,$var/" data.txt

Ничего не работает.

Может кто-нибудь помочь мне здесь?

Ответы [ 2 ]

11 голосов
/ 04 октября 2011

Как насчет:

cat filename | sed "s/$/ `date`/"
2 голосов
/ 04 октября 2011

проблема с этим

awk -v v1=$var ' { printf("%s,%s\n", $0, v1) } ' data.txt > data.txt

означает, что перенаправление > происходит first , и оболочка обрезает файл. Только тогда оболочка исполняет awk, который затем читает пустой файл.

Выберите один из них:

sed -i "s/\$/ $var/" data.txt

awk -v "date=$var" '{print $0, date}' data.txt > tmpfile && mv tmpfile data.txt

Однако , содержит ли ваш $var косые черты (например, "10/04/2011 12:34")? Если да, то выберите другой разделитель для команды sed s///: sed -i "s@\$@ $var@" data.txt

...