我的另一个问题是如何操作文本文件。
我将几个文件合并为一个大文件。现在我在新的大文件中有所有文件的标题,并且想在文件中删除它们而不保存在新文件下。
我的文件用“;”分隔 并用“;”隔开
我在这里搜索并找到了一个oneliner:如何找到与模式匹配的行并删除它们?
我在我的 cmd 中尝试过(我正在运行 Windows)并收到错误消息:
gawk:致命:无法打开源文件“就地”进行读取(没有这样的文件或目录)
我的代码是:
gawk -i inplace "!/^Address (CO)/" filename.txt
如果除了将'更改为“”之外还有什么特别的东西,我没有找到任何关于如何将其替换为 Windows 的信息。所有标题都在第一列中包含“地址(CO)”。
我的输入示例:
地址 (CO) - 客户 - 电话号码
Mainstreet 1 - Carl Monte - 123456
Mainstreet 2 - Anja Coleman - 407846
地址 (CO) - 客户 - 电话号码
Mainstreet 10 - Sebastian Wol - 756189
Mainstreet 7 - Dennis Mann - 694311
地址 (CO) -客户- 电话号码
...
期望的输出:
地址 (CO) - 客户 - 电话号码
Mainstreet 1 - Carl Monte - 123456
Mainstreet 2 - Anja Coleman - 407846
Mainstreet 10 - Sebastian Wol - 756189
Mainstreet 7 - Dennis Mann - 694311
...
所以“只是”删除包含“地址”但不是第一次出现的行。
我也试过那个oneliner:
gawk "!/Address/" filename.txt > newfile.txt
但我的输出与我的输入内容相同。所以文件名.txt == newfile.txt。它没有删除任何东西。
添加我的输出执行以下操作:
我将几个 csv 文件转换为 txt 使用
for /f "tokens=*" %%f in ('dir XLS\*.xls /s /b') do copy "%%f" ".\TXT\%%~nf.txt"
之后,我使用 powershellscript 将制表符分隔符交换为分号:
for /f "delims=" %%i in ('dir TXT\*.txt /b /s') do powershell.exe -executionpolicy remotesigned -file %powershellscript% -path "%%i" -outPath "Output\%%~nxi"
现在我在一个文件夹中有几个带有分号分隔符的 txt 文件。所有这些都具有相同的标题。为了在没有标题的情况下将它们合并到一个“大文件”中,我尝试过:
(for %%F in (Output\*.txt) do @more +1 "%%F") > output.txt
什么不工作。我也试过:
copy *.txt merged_tempfile.txt
gawk -F";" -v OFS=";" "$1 !~ /Address (CO)/ {print}" merged_tempfile.txt > bigfile.txt
什么不工作......
当我尝试使用
gawk dos2unix file1
gawk "!/Address (CO)/" file1.txt > temp1.txt
我只在 temp1 中获得与 file1 中相同的内容,最后一列中包含此内容。
圀嘀圀娀娀娀䄀䄀娀䔀䐀㤀 ㌀㐀㬀攀ⴀ甀瀀℀栀碗最栀㘀䔀䘀㬀䔀䰀㬀攀ⴀ刀攀㬬怈倜琀攀倜琀攀漀琀爀甀昀洀漀搀甀氀匀圀ⴀ嘀攀爀猀碗漀渀㬀㌀ഀഀ