Mik*_*keD 14 text-editing notepad++ regex csv
我有一个很大的CSV文件,需要删除第一列数据。我无法在 Excel 中打开它,因为 Excel 会将列中的某些值转换为科学数字。
我正在使用Notepad++,并且我正在尝试将文件 EXE 中的第一列字符串化,
1,Value1,value2,value3,value4,value5
3445,Value1,value2,value3,value4,value5
12345,Value1,value2,value3,value4,value5
1234,Value1,value2,value3,value4,value5
11,Value1,value2,value3,value4,value5
Run Code Online (Sandbox Code Playgroud)
看起来像
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Run Code Online (Sandbox Code Playgroud)
spe*_*akr 14
Notepad++ 的搜索和替换支持正则表达式 (regex),可轻松用于此目的。
使用以下正则表达式进行搜索:
^[^,]+,(.+)
Run Code Online (Sandbox Code Playgroud)
这匹配行的开头后跟尽可能多的字符,而不是逗号后跟逗号后跟该行的其余部分。该行的其余部分被分组为第一个子匹配。
全局替换为:
\1
Run Code Online (Sandbox Code Playgroud)
这表示第一个子匹配(该行的其余部分)。每一行都被第一列和逗号之后的所有内容替换。
在我在单个全局替换中找到上述方法后(并相应地更新了我的回复),我注意到这个回复基本相同,但也对所使用的正则表达式进行了全面的解释。
注意:较短的正则表达式^[^,]+,
不能用于使用空字符串进行全局替换,因为 Notepad++ 将替换除最后一列之外的所有列:替换第一列后,第二列(现在是第一列并且与正则表达式完全匹配)将被替换,然后是第三个,依此类推。但是,较短的正则表达式与其他编辑器(例如PSPad或vim)完美配合。
Den*_*nis 10
按Ctrl+H并执行以下替换:
Find what: .*?,(.*)
Replace with: \1
Wrap around: checked
Regular expression: selected
. matches newline: unchecked
Run Code Online (Sandbox Code Playgroud)
现在按Alt+A替换所有出现的内容。
该正则表达式 .*?,(.*)
匹配的整行:
.*?,
匹配第一个逗号之前的所有内容,包括逗号本身。
.*
表示任意字符出现任意次数,问号使量词惰性,即匹配尽可能少的字符。
(.*)
匹配第一个逗号之后的所有内容。
包围.*
在括号其转换成一个子模式,因此在桅杆可在替换字段来访问。
\1
表示第一个子匹配(匹配(.*)
)。
结果,Notepad++ 用第一个逗号后面的所有内容替换该行。
在 Windows 中,您可以按如下方式进行。
for /F "tokens=2,3,4,5,6 delims=," %i in (Input.csv) do @echo %i,%j,%k,%l,%m >> output.csv
Run Code Online (Sandbox Code Playgroud)
我假设你只有 6 列。如果您有更多列,请尝试在 tokens 字段中使用 * 进行试验。想法取自Windows for command