在文本文档+ MAC中每34个字符插入文本

时间:2013-06-27 04:54:47

标签: macos shell applescript character

我被困住了。我需要一个脚本来读取我的文本文档并在34个字符上插入自定义文本。这需要在我的文本文档中的每一行发生。

示例:

输入文字

`12345678912345678912345678912345  ABCD`
`12345678912345678912345678912345  EFGH`
`12345678912345678912345678912345  IJKL`
`12345678912345678912345678912345  MNOP`

输出文字

`12345678912345678912345678912345 custom text hereABCD`
`12345678912345678912345678912345 custom text hereEFGH`
`12345678912345678912345678912345 custom text hereIJKL`
`12345678912345678912345678912345 custom text hereMNOP`

我在下面提供了我可以在终端内工作的脚本。但是,如果有一种方法可以让它在Applescript中运行,那么当我将文件放到应用程序上时,它会提示并询问我想要插入的文本(这将是“自定义文本”)然后点击OK它会运行。

如果在Applescript中无法做到,那么Automator也可以工作,我似乎无法让Automator使用脚本。 Automator的流程是:

1. Get Specified Finder Items
2. Run Shell Script

这样运行正常,但它不会更改文档。帮助

2 个答案:

答案 0 :(得分:1)

在Bash中,您可以使用while read -r -N 34重复读取34个字符。未经测试的例子:

while IFS= read -r -N 34 || [[ -n "$REPLY" ]]
do
    printf '%s' "$REPLY"
    printf '%s\n' " custom text here"
done < input-file

更新:看起来OP想要在每行#34之后丢弃字符:

while IFS= read -r || [[ -n "$REPLY" ]]
do
    printf '%s' "${REPLY:0:34}"
    printf '%s\n' " custom text here"
done < input-file

更新:OP在这里,我根据你的知识想出了我需要做的一切!

while IFS= read -r || [[ -n "$REPLY" ]]
do
    printf '%s' "${REPLY:0:34}"
    printf '%s' "  Faux_Folder/"
    printf '%s\n' "${REPLY:36}"
done < input-file > output-file

答案 1 :(得分:1)

不确定这是否适用于OSX(至少适用于ubuntu。):

sed -n -E '1h;2,$H;${g;s/.{34}/& custom text here\n/gp}' input.txt

基本上,它会一直读到文件结尾。然后在每34个字符后插入“自定义文本\ n”。