我有一个.csv文件,想要添加信息。分隔符是; 。
我有一个想法,但它没有真正起作用。那是:
cat file.csv | awk -F ";" '{ print ""$1" "$2" "$3 }' > temp.csv
cat temp.csv | while read info1 info2 info3
do
read -p 'Give another information : " INFO
echo "$info1 ; $info2 ; $info3 ; INFO" >> new_file.csv
done
除了“while”中的“read -p”外,一切正常... 我想知道我是否应该只尝试使用awk命令,但实际上我并没有真正掌握这个命令....也许有人有一个想法来帮助我解决这个问题。
答案 0 :(得分:1)
awk '
BEGIN{FS=OFS=";"}
{printf "Enter new stuff for line : " $0 "\n";
getline newstuff < "-";
print $0,newstuff > "newfile" }' file
$ cat file
this;is;my;line;one
this;is;my;line;two
this;is;my;line;three
$ awk 'BEGIN{FS=OFS=";"}{printf "Enter new stuff for line : " $0 "\n"; getline newstuff < "-"; print $0,newstuff > "newfile" }' file
Enter new stuff for line : this;is;my;line;one
hola
Enter new stuff for line : this;is;my;line;two
hello
Enter new stuff for line : this;is;my;line;three
bonjour
$ cat newfile
this;is;my;line;one;hola
this;is;my;line;two;hello
this;is;my;line;three;bonjour
答案 1 :(得分:0)
完全在awk中:
awk 'BEGIN{FS=OFS=";"}{printf "prompt? ";getline info <"/dev/tty";print $1,$2,$3,info > "output"}'
答案 2 :(得分:0)
不要试图在awk中完成所有操作,因为像这样的解决方案容易出错和/或不必要的复杂。
试试这个bash脚本:
> new_file
exec 3<file
while IFS=';' read -r f1 f2 f3 rest
do
read -p "other info? " info <&1
echo "$f1;$f2;$f3;$info" >> new_file
done <&3
e.g:
$ > new_file
exec 3<file
while IFS=';' read -r f1 f2 f3 rest
do
read -p "other info? " info <&1
echo "$f1;$f2;$f3;$info" >> new_file
done <&3
other info? line 1
other info? line 2
other info? line 3
$ cat file
1;2;3;4
5;6;7;8
9;10;11;1
$ cat new_file
1;2;3;line 1
5;6;7;line 2
9;10;11;line 3