Ersetzen einer Zeichenfolge mit Linux-Leerzeichen

Ich habe einen Code geschrieben, der ** die Zeichenfolge mit einem Shell-Skript umschreibt und die fehlenden Teile mit Leerzeichen ausfüllt **, damit ich ein Memorandum darüber aufbewahre, was ich überprüft habe und wo ich gestolpert bin.

Aufgabe

Hintergrund

Eine Geschichte während des Trainings in C-Sprache. Beim Schreiben des Quellcodes musste der Header-Kommentar jedes Mal neu geschrieben werden. Zum Beispiel

training1-1.c


/*###################################################*/
/*#           File      :  training1-1.c            #*/
/*#           Date      :  2019/10/22               #*/
/*###################################################*/

int main(void){
    printf("Hello World\n");
    return 0;
}

Wie Kanji. Insbesondere während des Trainings sind die Dateinamen fast dieselben wie in "training1-1.c". Wenn Sie also die Dateierstellung → das Umbenennen von Dateinamen wiederholen, ist es jedes Mal schwierig, sie erneut einzugeben.

Was Sie erreichen wollen

  1. ** Kopfzeilenkommentare automatisch bearbeiten und die Anzahl der Kommentarbereiche sauber ausrichten **
  2. ** Wenn Sie den Quellcode mit vim schreiben und speichern, wird das Ausführungsergebnis so ausgegeben, wie es ist **

Da ich alles von der Dateierstellung bis zur Kompilierung in der Linux-Umgebung gemacht habe, habe ich es mit dem Wissen des Shell-Skripts gemacht, das ich gerade studiert habe.

Ergebnisse

Das Shell-Skript (zikko.sh) **, das den diesmal erstellten ** Header-Kommentar bearbeitet, kompiliert und ausführt, wird zusammen mit der zugrunde liegenden Vorlage (template.c) verwendet. Die Ausführungsmethode und der Inhalt von zikko.sh und template.c lauten wie folgt. kann auch vor der Erweiterung stehen.

.sh


#Ausführungsmethode
$ ./zikko.sh template <Dateiname>

zikko.sh


#!/bin/bash

template=$1
newFile=$2
date=$(date "+%Y/%m%d")
convertSymbolFile=$"FILE_NAME"
convertSymbolDate=$"YYYY/MM/DD"

#Bearbeiten Sie die Header-Datei, wenn die Datei nicht vorhanden ist
if [ ! -e $newFile.c ]; then
    #Passen Sie den Platz an, um den Titel der Datei zu ändern
    if [ ${#newFile} -le ${#convertSymbolFile} ]; then
        diffOfStr=$((${#convertSymbolFile}-${#newFile}))
        numOfSpace=$(seq -s" " $((diffOfNum+1)) | tr -d '[:digit:]')
        newFileTitle=$newFile$numOfSpace
        sed -e "s:$convertSymbolFile:$newFileTitle:g" $template.c > $newFile.c
    #else
    #Länge der konvertierten Zeichenfolge> FILE_Ich habe versucht, die Verarbeitung für NAME zu schreiben, habe aber aus Zeitgründen aufgegeben
    #Ich denke, dass es kein Problem gibt, wenn die Zeichenfolge von convertSymbolFile verlängert wird.
    fi
    #Datum ändern
    sed -i -e "s:$convertSymbolDate:$date:g" $newFile.c
fi

#Beginnen Sie mit der Bearbeitung in der Zeile, in der die Hauptfunktion geschrieben ist
mainFuncLow=$(grep SOURCE_CODE -n $newFile.c | cut -d ":" -f 1)
vim -c $mainFuncLow $newFile.c

#Kompilieren und ausführen
gcc -o $newFile.x $newFile.c
./$newFile.x

template.c


/*###################################################*/
/*#           File      :  FILE_NAME                #*/
/*#           Date      :  YYYY/MM/DD               #*/
/*###################################################*/

int main(void){
    //SOURCE_CODE
    return 0;
}

Wenn Sie die Zeichenfolge vor der Konvertierung in die Vorlage hinzufügen und mit dem Ändern des Titels der Datei zikko.sh ein wenig spielen, sollten Sie in der Lage sein, einfache Header-Kommentare hinzuzufügen ... Ich denke, der Code ist lang für die Arbeit, die einfach erscheint. Bitte lassen Sie mich wissen, ob es einen besseren Weg gibt.

Stolperpunkt

Leerzeichen wiederholen

Als ich nach "Linux-Zeichenfolgen ersetzen, wiederholen" suchte, fand ich einige Artikel über das Wiederholen von Symbolen, aber ich konnte nicht viele Artikel finden, in denen wiederholt Leerzeichen eingefügt wurden. Die einfachste Methode, die ich gefunden habe, war, das Ergebnis des Befehls seq an den Befehl tr in der Pipeline [^ 1] zu senden.

Stolperpunkt 1.sh


#diffOfNum=4

$ seq -s" " $((diffOfNum+1)) | tr -d '[:digit:]'
#->***** Anstelle von Raum*Anzeige mit

String-Verkettung

Um Zeichenfolgen mit einem Shell-Skript zu kombinieren, sollten Shell-Variablen nacheinander geschrieben werden [^ 2].

Stolperpunkt 2.sh


#newFile=file1 ※<Dateiname>
#numOfSpace=****

$ newFileTitle=$newFile$numOfSpace
#->file1****

Verwendung des Befehls sed

Ich habe oft den Befehl sed verwendet, um Zeichenfolgen zu ersetzen, daher werde ich kurz darauf hinweisen, wie man ihn verwendet und wo ich gestolpert bin. Erstens ist die Ausführungsmethode wie folgt.

$ sed [Möglichkeit] <Skript> <Dateiname>

Recommended Posts

Ersetzen einer Zeichenfolge mit Linux-Leerzeichen
Massenersatz von Zeichenfolgen in Python-Arrays
00. Umgekehrte Reihenfolge der Zeichenfolgen
Verkettung von Rubinschnüren
Bedeutung der Linux-Berechtigungen
Hinzufügung von Amazon Linux Swap
Erstellen Sie eine inkrementelle Sicherung von Linux (Wiederherstellung)
Zusammenfassung der Linux-Verteilungstypen
Japanische Übersetzung des Linux-Handbuchs
Linux: DNS-Ersatz in systemd.
Eine kurze Zusammenfassung von Linux
Bedeutung der Linux-Verzeichnisberechtigungen