Awk 如何读取文件并在每行进行查询?

Awk 如何读取文件并在每行进行查询?,awk,cat,Awk,Cat,我有一个.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 "$inf

我有一个.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命令,但实际上我并没有真正掌握这个命令,所以……也许有人有办法帮我解决这个问题

awk'
awk '
BEGIN{FS=OFS=";"}
{printf "Enter new stuff for line : " $0 "\n"; 
getline newstuff < "-"; 
print $0,newstuff > "newfile" }' file
开始{FS=OFS=“;”} {printf“为行输入新内容:$0”\n; getline newstuff<“-”; 打印$0,newstuff>“newfile”}文件
测试:
$cat文件
这是我的;线路;一
这是我的;线路;二
这是我的;线路;三
$awk'BEGIN{FS=OFS=“;”}{printf”为行“$0”\n”输入新内容;getline newstuff<“-”;print$0,newstuff>“newfile”}文件
为行输入新内容:this;是我的;线路;一
你好
为行输入新内容:this;是我的;线路;二
你好
为行输入新内容:this;是我的;线路;三
你好
$cat新文件
这是我的;线路;一,;你好
这是我的;线路;二,;你好
这是我的;线路;三,;你好
完全在awk内:

awk 'BEGIN{FS=OFS=";"}{printf "prompt? ";getline info <"/dev/tty";print $1,$2,$3,info > "output"}'
awk'BEGIN{FS=OFS=“;”}{printf”提示符?;getline info“output”}

不要尝试在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
>新的\u文件
exec 3新文件
完成新文件
exec 3新文件

你想阅读每一行吗?一个简单的更改是
read-p'给出另一个信息:“至少,你需要
INFO
echo
字符串中
$INFO
。@ZiyaddinSadigov:是的,以便在每一行中添加数据(例如出生日期)@沃恩·卡特:我试过了,但没有成功。它总是说:“-ksh[3]:读:没有查询过程“它工作得很好,但我想用这些行创建一个新文件。能在awk内完成吗?可以这样做的东西:打印$1,$2,$3,info>>newfile.csv。哦,是的,我本来想添加它的。是的,它是您键入的内容,但只有一个
(它在整个文件中一直保持打开状态,因此不会在每一行中都出现阻塞)。我已经把它编辑好了。我真的不知道如何把这些行放在代码中。我想让用户为每一行输入新信息。代码的结果将是一个包含旧数据和新数据的文件。
> 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
$ > 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