【问题标题】:Automated text file Editing自动文本文件编辑
【发布时间】:2015-07-08 07:31:22
【问题描述】:

我有一个类似于此的文本文件:

+PhoneNumber          3/5/15 7:16 PM          us          Text is here
+PhoneNumber          3/5/15 7:16 PM          us          Text is here
+PhoneNumber          3/5/15 7:16 PM          us          Text is here
+PhoneNumber          3/5/15 7:16 PM          us          Text is here

现在的问题是有些行是这样的:

+PhoneNumber          3/5/15 7:16 PM          us          Text is here
but runs down to here 
+PhoneNumber          3/5/15 7:16 PM          us          Text is here
+PhoneNumber          3/5/15 7:16 PM          us          Text is here
but runs down to here 
+PhoneNumber          3/5/15 7:16 PM          us          Text is here
but runs down to here or even
longer like this

现在我有长度不同的线条,并执行上述示例的操作。我的目标是我需要每一行看起来像第一个例子。 IE 我希望每一行都以“+PhoneNumber”而不是文本开头。所有的文本都应该退格到它的前一行,这样它就完成了这个句子。所以它会更像这样:

+PhoneNumber          3/5/15 7:16 PM          us          Text is here but runs down to here 
+PhoneNumber          3/5/15 7:16 PM          us          Text is here
+PhoneNumber          3/5/15 7:16 PM          us          Text is here but runs down to here 
+PhoneNumber          3/5/15 7:16 PM          us          Text is here but runs down to here or even longer like this

我完全不知道如何获得脚本或任何东西来为我做这件事,所以我正在寻求帮助。我试过用谷歌搜索它,没有任何帮助。现在我正在手动编辑每一行,但是有超过 30000 行文本,手动编辑所有这些需要很长时间。因此,我们将不胜感激任何帮助。谢谢大家!

TLDR;需要一个脚本,如果它所在的行不以 + 开头,则将文本备份到上一行

【问题讨论】:

    标签: text editing


    【解决方案1】:

    我建议使用两个表达式,首先将 \r\n 替换为空格,然后将 (.*?)+ 替换为 $1\r\n+

    在记事本++中快速输出

    【讨论】:

      【解决方案2】:

      假设您可以访问 awk:

      ~ $ cat test.awk
      /^\+/ { printf "\n%s", $0; }
      /^[^+]/ { printf " %s", $0; }
      END { print ""; }
      
      ~ $ cat test.input
      +PhoneNumber          3/5/15 7:16 PM          us          Text is here
      but runs down to here
      +PhoneNumber          3/5/15 7:16 PM          us          Text is here
      +PhoneNumber          3/5/15 7:16 PM          us          Text is here
      but runs down to here
      +PhoneNumber          3/5/15 7:16 PM          us          Text is here
      but runs down to here or even
      longer like this
      
      ~ $ awk -f test.awk <test.input  | tail +2
      +PhoneNumber          3/5/15 7:16 PM          us          Text is here but runs down to here
      +PhoneNumber          3/5/15 7:16 PM          us          Text is here
      +PhoneNumber          3/5/15 7:16 PM          us          Text is here but runs down to here
      +PhoneNumber          3/5/15 7:16 PM          us          Text is here but runs down to here or even longer like this
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-27
        • 1970-01-01
        • 2011-07-24
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多