AppleScript-Mehrwert im Text

0

Angenommen, ich habe die folgende Textdatei:

  1. DEMO
  2. TEXT 1
  3. TEXT2
  4. DEMO
  5. usw....

  6. DEMO

  7. TEXT 1
  8. TEXT2
  9. DEMO
  10. usw....

  11. DEMO

  12. TEXT 1
  13. TEXT2
  14. DEMO
  15. usw....

Ich möchte Text zwischen dem ersten TEXT1 und dem ersten TEXT2 einfügen (Zeile 2/3)

so würde der text lauten:

  1. DEMO
  2. TEXT1 MEIN TEXT HIER
  3. TEXT2
  4. DEMO
  5. usw....

  6. DEMO

  7. TEXT 1
  8. TEXT2
  9. DEMO
  10. usw....

  11. DEMO

  12. TEXT 1
  13. TEXT2
  14. DEMO
  15. usw....

Ich weiß, wie ich den Text filtern kann, um den Wert eines beliebigen Texts zu erhalten, der mit dem folgenden Code enthalten wäre, aber wie kann ich bei dieser Einstellung Text in meine Textdatei einfügen?

property leftEdge1 : "2. TEXT1"
property rightEdge1 : "3. TEXT2"
set myNewCaseNote to ""
set newFile to (path to desktop folder as text) & "_Note_Backup.txt"
set theSource to read file newFile
set theText to Unicode text
try
    set saveTID to text item delimiters
    set text item delimiters to leftEdge1
    set classValue to text item 2 of theSource
    set text item delimiters to rightEdge1
    set myCaseNote to text item 1 of classValue
    set text item delimiters to saveTID
    myCaseNote
end try
Kevin
quelle

Antworten:

1

Die Textverarbeitung sollte mit Shell-Skript erfolgen. Normalerweise kann dies in einer kurzen Zeile erfolgen:

sed 's;^[^0-9]*2 TEXT1;& MY TEXT HERE;' text_file.txt

Vorausgesetzt, es gab oben kein Einrückungsproblem. Auf der Grundlage dessen, wie es sich anhört, als ob Sie es gemeint haben, ist hier eine andere Lösung:

sed 's;^[^0-9]*2 TEXT1;&\'$'\n'' MY TEXT HERE;' text_file.txt

AppleScript ist nicht das richtige Werkzeug für diesen Job.

William T Froggard
quelle
1

Wie in der vorherigen Antwort erläutert, gibt es bessere Möglichkeiten, um das zu tun, was Sie möchten. Wenn Sie dies jedoch mit AppleScript tun möchten, können Sie dies mit einer modifizierten Version von diesem tun:

on SearchAndReplace(SearchString, ReplaceString, SearchIn)
    set text item delimiters to SearchString
    set temp to text items of SearchIn
    set text item delimiters to ReplaceString
    set z to temp as string
    set text item delimiters to ""
    return z
end SearchAndReplace

on run
    set OriginalFullText to "DEMO
TEXT1
TEXT2
DEMO
etc....
DEMO
TEXT1
TEXT2
DEMO
etc....
DEMO
TEXT1
TEXT2
DEMO
etc...."

    set test to "TEXT1
TEXT2"
    set Text1 to "TEXT1"
    set Text2 to "TEXT2"
    set MyText to Text1 & " My Text Here" & return & Text2
    set Text2 to my SearchAndReplace(test, MyText, OriginalFullText)
end run

Ich hoffe, es hilft.

MBUST
quelle