我正在尝试删除文件中行内的重复字符串。我尝试使用uniq,但这仅适用于删除重复行,而不是重复行中的字符串。
我只关心=符号后面的“单词”,“单词”是任何非空格序列,但不能包含=符号。
我的文件如下所示:
LINE1=hello hello world
LINE2=hello world world
LINE3=hello hello hello
我希望它看起来像:
LINE1=hello world
LINE2=hello world
LINE3=hello
答案 0 :(得分:2)
这是对您可能要寻找的内容的一种可能解释:
$ awk -F'=' '{words=""; delete seen; split($2,t,/ /); for (i=1;i in t;i++) if (!seen[t[i]]++) words = (words=="" ? "" : words " ") t[i]; print $1 FS words}' file
LINE1=hello world
LINE2=hello world
LINE3=hello
它基于很多假设,但主要是你只关心=
符号后面的“单词”,而“单词”是任何非空格序列但不能包含=
个符号
答案 1 :(得分:1)
我想出了这个awk:
awk -F '[= ]' '{delete a; a[$2]++; printf "%s=%s", $1, $2;
for (i=3; i<=NF; i++) if (!a[$i]++) printf "%s%s", OFS, $i; print ""}' file
LINE1=hello world
LINE2=hello world
LINE3=hello
答案 2 :(得分:1)
int start() {
while (!IsStopped()) {
Sleep(2000);
int handle;
int value;
handle=FileOpen("https://www.quandl.com/api/v3/datasets/ADB/LAB_UNEMP_JPN.csv?rows=1&api_key=my_api_key", FILE_CSV, ';');
if(handle>0)
{
value=FileReadNumber(handle);
Print(handle);
FileClose(handle);
}
}
答案 3 :(得分:0)
awk 'NF--{sub(/hello/,"world",$2)}/LINE3/{sub(/world/,"")}1' file
LINE1=hello world
LINE2=hello world
LINE3=hello