проблема с этим
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