Puncte:-6

Cum scriu un script care tipărește fiecare linie a unui fișier care nu este conținut într-un alt fișier? (Script Bash)

drapel us

de exemplu, am 2 fișiere text:

fisierul 1 este format din:

A 
b
bb
cc

fișierul 2 este format din:

aa
bc
ab

ieșirea ar trebui să fie:

$p1.sh fișier1 fișier2 
bb
cc

$p1.sh fișier2 fișier1
aa
bc
ab

cum aș scrie acest script bash? Scriam ceva de genul acesta dar nu mergea:

#!/bin/bash

pisica „$1” | în timp ce citește m  
do
    grep -f -v „$m” „$2”
terminat | sort -u

orice fel de indrumare ar fi apreciat! Sunt un programator începător și nu am experiență în scrierea de scripturi. Mulțumesc!

drapel hu
Răspunde asta la întrebarea ta? [Cum scriu un script bash care tipărește fiecare linie a unui fișier și în al doilea fișier](https://askubuntu.com/questions/1362883/how-do-i-write-a-bash-script-that-prints -fiecare-linie-de-un-fișier-de asemenea-în-secundă-f)
nl34 avatar
drapel us
@mikewhatever Din păcate, nu, acel link se uită la linii comune, dar aici încerc să imprim linii care nu sunt comune. Sarcina complet opusă! :)
bac0n avatar
drapel cn
`-f Opțiunea ` ia un fișier ca argument. Fișierul este de fapt o listă de modele (un model pe linie). Dacă încercați să potriviți literal, ar trebui să adăugați și `-F`.
drapel hu
Este acest homewotk? Ce legătură are cu Ubuntu?
NotTheDr01ds avatar
drapel vn
Ți-am dat un vot pozitiv, dar încep să văd de ce a primit atât de multe voturi negative. *Tu* ai pus întrebarea opusă acum câteva zile, nu ai răspuns nici „de ce” ai avea nevoie de asta nici o dată (făcându-ne să credem că vrei să-ți facem temele pentru tine), iar cel de-al doilea răspuns a fost oferit pe celălalt întrebarea are nevoie pur și simplu de un semnal pentru a fi schimbat pentru a inversa răspunsul, pe care ar trebui să îl puteți găsi dacă ați încercat acel răspuns și „man grep” pentru a vedea opțiunile. Dacă nu este o întrebare despre teme, este o problemă XY[https://meta.stackexchange.com/q/66377/902710].
Puncte:0
drapel cn

Cred că trebuie să utilizați comenzile sort și comm pentru acest job. De exemplu:

comm -23 <(sortare -u fișier1.txt) <(sortare -u fișier2.txt) > fișier3.txt

Vă las pe voi să jucați cu steagurile de suprimare (-1,-2,-3) pentru rezultatul dorit. Am folosit -23 ca exemplu.

O altă metodă, poate mai ușoară, este utilizarea awk după cum urmează:

awk 'FNR==NR{linii[$0]=1;urmatorul} !($0 in linii)' fisier1 fisier2

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.