Robię grep i sed i otrzymuję 2 wiersze pliku, który mnie interesuje. Jak mogę uzyskać te wiersze w jednym wierszu kończącym się nowym znakiem wiersza?
Teraz dostaję:
pattern1
pattern2
chciałbym dostać pattern1 pattern2 \n
Robię grep i sed i otrzymuję 2 wiersze pliku, który mnie interesuje. Jak mogę uzyskać te wiersze w jednym wierszu kończącym się nowym znakiem wiersza?
Teraz dostaję:
pattern1
pattern2
chciałbym dostać pattern1 pattern2 \n
printf %s\\n pattern1 pattern2 | sed '$!N;s/\n/ /'
Odpowiedzi:
paste
:To znaczy: „przeczytaj wiersz ze standardowego wejścia (pierwszy
-
), przeczytaj kolejny wiersz ze standardowego wejścia (drugi-
), a następnie połącz je spacją”technika specyficzna dla bash:
ref: http://www.gnu.org/software/bash/manual/bashref.html#index-mapfile
źródło
- -
? Czy takie polecenie jest takie?paste
jak chcesz przetwarzać dane wejściowe. 2 na raz. Dodaj więcej do zrobienia 3 naraz.seq 10 | paste -d " " - -
.Umieszczę trzy wersje różnych metod pod rząd
AWK
SED
TR
I jest ich o wiele więcej.
źródło
tr
Rozwiązanie będzie przełknąć przełamane kończy, więc może warto dodać; echo
do tego jednegomożesz to zrobić za pomocą skryptu powłoki lub w wierszu poleceń, po prostu umieść dane wyjściowe polecenia w zmiennej, a następnie
echo
:źródło
*
lub?
), wartości mogą ulec zmianie.$()
zamiast tego… i używając printfprintf '%s\n' "$x"
printf '%s\n' "$x"
NIE usunie to „wewnętrznej” nowej linii.Za pomocą
sed
możesz to zrobić:N;
mówi,sed
aby dodać następny wiersz do obszaru wzorów, więc terazsed
działa z obiema liniami.s/\n/ /
zamienia znak nowej linii spacją, „łącząc” dwie linie razem.źródło
Prosty sposób, wyjście rury do
xargs
:Działa to tylko z niewielkim wyjściem, ponieważ jest ograniczone maksymalną liczbą znaków w wierszu poleceń. Największa wartość zależy od systemu, możesz uzyskać tę wartość za pomocą
getconf ARG_MAX
.źródło
IFS chętnie je zje, jeśli chcesz.
źródło
zawiń swój sed / grep w backtyki
kiedy twoje pierwotne polecenie było:
twoje nowe polecenie będzie:
Nie wprowadza odstępów między liniami, ale zawsze możesz przyczepić się do innej rury sed:
źródło