tipos matriculas fisiologia enfermedad definicion bogota sed

matriculas - sed-e linux



Reemplazar nuevas lĂ­neas con literal / n (4)

Esta pregunta de stackoverflow tiene una respuesta para reemplazar las líneas nuevas con sed, utilizando el formato sed '': a; N; $! Ba; s / / n / / g''.

Esto funciona, pero no para caracteres especiales como / r, / n, etc.

Lo que estoy tratando de hacer es reemplazar el carácter de nueva línea por un / n literal. Intentó

sed '':a;N;$!ba;s//n///n/g''

y

sed '':a;N;$!ba;s//n////n/g''

además

sed ":a;N;$!ba;s//n/''/'n/g"

Pero todo fue en vano. Sed sigue reemplazando el carácter de nueva línea ... con un carácter de nueva línea.

¿Pensamientos?

Editado después de la primera respuesta:

En aras de la integridad, los comandos ejecutados son:

PostContent = cat $TextTable | sed -E '':a;N;$!ba;s//r{0,1}/n///n/g'' cat $TextTable | sed -E '':a;N;$!ba;s//r{0,1}/n///n/g''

Donde TextTable es una variable que se vincula a un archivo de texto que contiene una salida JSON en el siguiente formato:

{"posts":[{"title":"mysupertest","slug":"bi-test","markdown":"##TEST First things first ! To TEST this TEST TEST, click the download button below. If you need more information about the TEST TEST, you can read the Table of Contents below. <a href=''/assets/TEST.pdf'' style=''border-radius:5px; padding: 4px 15px; background-color:#008CBA; color:white; text-decoration:none; float:right;'' download> Download </a> ##TEST OF TEST ###TEST TEST PLATFORM TEST GUIDE WaTESTve TEST SetupTEST TESTTEST TESTTESTETESTTETSTTEST TESTTESTTTETST TESTTES TESTTESTESSTSTESTESTTES TEST","image":"http://localhost:3000/myimage.jpg","featured":false,"page":false,"status":"draft","language":"en_US","meta_title":null,"meta_description":null,"author":"4","publishedBy":null,"tags":[{"uuid":"ember2034","name":"implementation guides","slug":null,"description":null,"meta_title":null,"meta_description":null,"image":null,"visibility":"public"}]}]}


¿Es esto todo lo que estás tratando de hacer?

$ cat file a b c $ awk ''{printf "%s//n", $0}'' file a/nb/nc/n$

o incluso:

$ awk -v ORS=''//n'' ''1'' file a/nb/nc/n$

Ejecute dos2unix en el archivo de entrada primero para eliminar los /r s si lo desea, o use -v RS=''/r?/n'' con GNU awk o do sub(//r$/,""); antes de la impresión o cualquier otra docena de formas claras y sencillas de manejarlo.

sed es para sustituciones simples en líneas individuales, eso es todo. Para cualquier otra cosa debes usar awk.


Aquí hay un pequeño script de Python para reemplazar ''/ r / n'' con ''/ r'' en el directorio de manera recursiva importar el sistema de importación de sistemas

if len(sys.argv) < 2: print("Wrong arguments. Expected path to directory as arg 1.") exit(1) path = sys.argv[1] def RecOpOnDir(path, op) : for f in os.listdir(path): full_f = path + "/" + f if os.path.isdir(full_f): RecOpOnDir(full_f, op) else: try: op(full_f) except Exception as ex: print("Exception during proc ''", full_f, "'' Exception:", ex) file_counter = 0 def WinEndingToUnix(path_to_file): global file_counter file_counter += 1 file_strs = [] with open(path_to_file) as f: for line in f: file_strs.append(line.replace(r"/r/n", r"/n")) with open(path_to_file, "w") as fw: fw.writelines(l for l in file_strs) try: RecOpOnDir(path, WinEndingToUnix) print("Completed.", file_counter, "files was reformed") except Exception as ex: print("Exception occured: ", ex) exit(1)


Esto debería funcionar con ambos finales de línea LF o CR-LF :

sed -E '':a;N;$!ba;s//r{0,1}/n///n/g'' file


Puedes hacer esto usando sed y tr :

sed ''s/$///n/'' file | tr -d ''/n''

Sin embargo, esto agregará un /n adicional al final.