字段都用括号括起来,并用分号分隔的替换字符在某些列:如何使用awk在我的文件AWK-测试
"col1";"col2";"col3";"col4";"col5";
"eiusmod";"tempor";"incididunt";"ut";"labore";
"et";"dolore";"magna";"aliqua";"Ut";
"enim";"ad";"minim";"veniam";"quis";
"ut";"aliquip";"ex";"ea";"commodo";
"nostrud";"exercitation";"ullamco";"laboris";"nisi";
真实数据(标题行加上三个记录):
"col1";"col2";"col3";"col4";"col5";
"/absence/lang/#LANG_ID#/.descr.php";"BP2_DESCR";"Dodaj";"Add";"Adicionar";
"/cal/lang/#LANG_ID#/cal_feed.php";"LF_COMM_MSG";"je komentiral ""#EVENT_TITLE#""";"commented on an event ""#EVENT_TITLE#""";"comentado sobre o evento ""#EVENT_TITLE#""";
"/mod/lang/#LANG_ID#/set_events.php";"IM_NOTIFY";"Pozdravljeni #USER_NAME#!
#FROM_USER# vam je poslal(a) sporocilo.
------------------------------------------
#FROM_USER#: #MESSAGE#
------------------------------------------;"Hello #USER_NAME#!
You have a new notification from #FROM_USER#
------------------------------------------
#MESSAGE#
------------------------------------------;"Olá #USER_NAME#!
Você tem uma nova notificação de #FROM_USER#
------------------------------------------
#MESSAGE#
------------------------------------------;
我知道如何打印柱3的前30行和4列,如果3具有字符“M”:
gawk 'BEGIN {FS = ";" } ; $3 ~/m/ {print $3 ";" $4} NR==30{exit}' OFS=';' awk-test
结果我S:
"magna";"aliqua"
"minim";"veniam"
"ullamco";"laboris"
但我不知道 的(a)如何与 “X” 替换 “m” 个在测试30行样品 (b)如何更换 “m” 个以 “X” 上一个真正的250.000行文件。
上测试AWK所需的输出:
"xagna";"aliqua"
"xinim";"veniam"
"ullaxco";"laboris"
在现实中,我需要修复的只有3列上的字符错误。因此,我想知道如何编写已更改的行并将未更改的行保存到包含固定列3的新文件中?
预先感谢您!
可你的领域包含分号码或换行符?如果答案是“否”,那么你为什么用引号括起来? –
这个文件不是我的,它是一个我必须处理的CSV输出文件。每个字段都用引号括起来,并用分号分隔。分号也在每行的结尾。是的,域也包含分号和换行符。 – andrej
然后,您接受的答案将不适用于您,因为它假定您没有这些情况。如果你需要帮助,你的问题将显示一些真正具有代表性的样本输入和输出,包括字段中的分号和换行符。 –