Jak mogę użyć narzędzi do przetwarzania tekstu, aby wstawić nowy wiersz po każdych N wierszach?
Przykład dla N = 2:
WKŁAD:
sadf
asdf
yxcv
cxv
eqrt
asdf
WYDAJNOŚĆ:
sadf
asdf
yxcv
cxv
eqrt
asdf
text-processing
LanceBaynes
źródło
źródło
[[ ]]
do testu:while read line; do echo "$line"; ((lines++ % 2)) && echo; done
.sed '0~2 a\ '
dodaje spację do każdej wstawionej nowej linii. Jeśli chcesz dodać do nowej linii po każdym wierszu, każdy z nich podobnie pracy:sed '0~1 a\ '
,sed 'a\ '
lub po prostused G
.Za pomocą
paste
źródło
... wszystko czego potrzebujesz ...
Na przykład:
WYDAJNOŚĆ:
... (i spacja następuje również po 6) ... lub ...
WYDAJNOŚĆ:
(i żadne puste nie występuje po 5)
Jeśli puste miejsce powinno być zawsze pomijane w ostatniej linii:
źródło
Kolejny awk smak:
źródło
sed (GNU)
Z (GNU)
sed
:Krótkie (brzydkie jak na N = 100):
man sed wyjaśnia ~ jako:
sed (inne)
Z innymi sed (licz nowe linie):
Lub, aby być bardziej przenośnym, napisane jako (usuń komentarze do niektórych wersji sed):
awk
Z
awk
prawdopodobnie:źródło