【问题标题】:How to delete the first “text” the each line of the text如何删除每行文本的第一个“文本”
【发布时间】:2021-06-20 17:31:23
【问题描述】:

这是我第一次在这里提问,如果我做错了什么,我很抱歉

考虑一个文件名“00.txt”,它包含以下内容。

ai_00_01_01 word01 word01(translated)
ai_00_01_02 word02 word02(translated)

...
ai_00_01_305 word305 word305(translated)

附: (翻译)并不意味着那里真的有一个(),它只是该行单词的另一种语言

我希望它变成这样:

word01 = word01(translated)
word02 = word02(translated)

...
word305 = word305(translated)

我尝试过的事情:

cut -f 2- -d ' ' 00.txt > new_file.txt

“给我第二个和任何其他字段,使用空格作为分隔符,从 file.txt 文件并将输出定向到 new_file.txt” -by ivanivan in https://unix.stackexchange.com/questions/515249/how-to-delete-the-first-word-in-each-line-of-a-file (我认为这意味着它将文本删除到第一个空格?糟糕的英语对不起)

我尝试的代码只是在里面生成了一个新的txt文件,而00 txt文件并没有改变任何东西

感谢任何人帮助这个菜鸟(又名我自己)

【问题讨论】:

  • 这是在 Windows 还是 Linux 上?您使用了仅适用于 Windows 的 [batch-file] 标签,但您尝试使用仅适用于 Linux 的 cut
  • 它适用于 Windows....这就是它起作用的原因...

标签: batch-file batch-processing


【解决方案1】:

看看你是否正在寻找类似的东西..

% cat stuff.txt
ai_00_01_01 word01 word01(translated)
ai_00_01_02 word02 word02(translated)
ai_00_01_305 word305 word305(translated)

% cut -d' ' -f2- stuff.txt > stuff2.txt

输出是:

% cat stuff2.txt
word01 word01(translated)
word02 word02(translated)
word305 word305(translated)

然后你可以像这样插入 =:

% sed 's/ / = /' stuff2.txt
word01 = word01(translated)
word02 = word02(translated)
word305 = word305(translated)

然后,全部放在一行中:

% cut -d' ' -f2- stuff.txt | sed 's/ / = /' > stuff2.txt

【讨论】:

  • 感谢您的帮助! (虽然我必须等到我回到家才能尝试它是否有效)
  • 对不起...我需要一个窗口批处理而不是 Linux
【解决方案2】:

由于您的数据已经用空格分隔,您可以使用带有默认分隔符的for /f 循环:

for /f "tokens=2,3" %%A in (00.txt) do echo %%A = %%B >>new_file.txt

这需要每行中的第二个和第三个内容,将第二个内容存储在%%A 中,将第三个内容存储在%%B 中,然后以您在问题中提到的格式显示这两个内容,并将其重定向到@ 987654325@。 (请注意,如果您认为您将多次运行该脚本,则应在此之前添加一行以删除 new_file.txt,否则您只需将这些行附加到现有文件的末尾。)

【讨论】:

    猜你喜欢
    • 2016-10-22
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2022-01-27
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多