Ich habe eine CSV-Datei, die so aussieht:
c1,c2,c3,http://aaa.com/blblbblb\nhttp://bbb.com/sdsdsds\nhttp://ccc.com\nhttp://foo.com/ghghghgh
cc1,cc2,cc3,http://eee.com/blblbblb\nhttp://foo.com/sdsdsds\nhttp://fff.com\nhttp://ttt.com/ghghghgh
ccc1,ccc2,ccc3,http://foo.com/blblbblb\nhttp://vvv.com/sdsdsds\nhttp://foo.com/nmnmnmnm\nhttp://qqq.com\nhttp://kkk.com/ghghghgh
ist es möglich, die obige CSV-Datei zu bearbeiten und wie folgt zu exportieren: (mit sed
oder awk
oder ähnlichen Bash-Befehlen)
c1,c2,c3,http://foo.com/ghghghgh
cc1,cc2,cc3,http://foo.com/sdsdsds
ccc1,ccc2,ccc3,http://foo.com/blblbblb;http://foo.com/nmnmnmnm
Eigentlich möchte ich nur die vierte Spalte und das verbleibende http://foo.com/{some string}
Muster manipulieren (mit anderen Worten, Links aus der vierten Spalte extrahieren, wenn sie die Domäne foo.com enthalten).
Antwort1
sed '
s|http://foo.com|@|g #replace `foo.com` domain with rare symbol
/./s/\\n\|$/;/g #replace `\n` by `;` and add it to end
s/http[^@]*;//g #remove all domain(s) without `foo.com`
s|@|http://foo.com|g #place `foo.com` back
s/;$// #remove `;` from the end of line
' csv.file
Antwort2
Sie können Folgendes tun:
cat your_csv.csv | sed 's/\\n/,/g' | cut -d ',' -f 4
sed
ändert alle \n
s in ,
und cut
wählt das vierte Feld, wenn das Trennzeichen,