我想翻转具有500多行的文档的行顺序。这些行不仅是数字,有些还包括文本和其他字符。混合了。
例:
1号线 2号线 3号线 4号线 5号线 6号线
然后,我想翻转,反转并从下到上看起来像这样:
6号线 5号线 4号线 3号线 2号线 1号线
我想翻转具有500多行的文档的行顺序。这些行不仅是数字,有些还包括文本和其他字符。混合了。
例:
1号线 2号线 3号线 4号线 5号线 6号线
然后,我想翻转,反转并从下到上看起来像这样:
6号线 5号线 4号线 3号线 2号线 1号线
Answers:
除了通常包括的TextFX插件以外,不需要其他软件的解决方案:
也可以在没有TextFX插件的Notepad ++中完成此操作。它遵循与接受的答案相同的策略,但是使用本机功能。可以这样完成:
好吧,由于我们提供了代码示例,因此,如果您使用的是Windows 7,或者已在其他版本的Windows上安装了PowerShell,则:
$foo = New-Object System.collections.arraylist;
$foo.AddRange($(Get-Content 'C:\Path\To\File.txt));
$foo.Reverse();
$foo | Out-File C:\Path\To\File.txt
或对于非编码答案,下载gVim,打开文件并键入:
:g/^/m0
如果您愿意编译C ++,则可以解决问题。基本上,我将文件的每一行放入向量中,然后使用反向迭代器将其输出到新文件中。
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
int main()
{
std::vector<std::string> fileLines;
std::string currLine;
std::ifstream inFile("input.txt");
if (inFile.is_open())
{
while (inFile.good())
{
std::getline(inFile, currLine);
fileLines.push_back(currLine);
}
inFile.close();
}
else
{
std::cout << "Error - could not open input file!\n";
return 1;
}
std::ofstream outFile("output.txt");
if (outFile.is_open())
{
std::vector<std::string>::reverse_iterator rIt;
for (rIt = fileLines.rbegin(); rIt < fileLines.rend(); rIt++)
{
outFile << *rIt;
}
outFile.close();
}
else
{
std::cout << "Error - could not open output file!\n";
return 1;
}
return 0;
}
如果输出文件缺少行之间的换行符,则将更改为outFile << *rIt;
, outFile << *rIt << "\r\n";
以便添加换行符(\r
如果您使用的是Unix / Linux,请省略)。
免责声明:我尚未测试此代码(我在“记事本”中非常快地编写了此代码),但看起来可行。
您可以在网站http://textmechanic.co/Sort-Text-Lines.html上在线进行操作
这是我刚刚写的C#.NET代码:)
class Program
{
static void Main(string[] args)
{
try
{
String line;
Stack<String> lines = new Stack<string>();
// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader("test.txt"))
{
// Read and display lines from the file until the end of
// the file is reached.
while ((line = sr.ReadLine()) != null)
lines.Push(line);
}
// Create a writer and open the file
TextWriter tw = new StreamWriter("test2.txt");
// Write a line of text to the file
while (lines.Count > 0)
tw.WriteLine(lines.Pop());
// close the stream
tw.Close();
}
catch (Exception e)
{
// Let the user know what went wrong.
Console.WriteLine("The file could not be read/written:");
Console.WriteLine(e.Message);
}
}
}
unsafe
在Main
这里需要关键字?
这是一种非编码方式:
如果您希望通过单击在Notepad ++上自动执行此操作:
瑞克·迪克哈德(Reck Dickhard)的所有荣耀!
要将其添加到上下文菜单中:
如果单击插件选项卡→ Python脚本 → 配置,则可以将脚本分配给工具栏图标,也可以分配给Python脚本菜单本身。(如果您将脚本分配给菜单,则该脚本将立即显示,但直到下一次Notepad ++启动时,您才可以为其分配快捷方式。如果将其分配给工具栏图标,则该脚本仅会显示在菜单栏上。下一次启动Notepad ++。)