正则
以下正则在sublime中测试过。
匹配正数第n个逗号
^(.*?,.*?)K,
作用:
匹配到csv文件每行数据出现的第n个逗号,可对其进行替换等操作。
匹配倒数第2个逗号
,(?=(?:[^,]*,){2}[^,]*$)
作用:
匹配到csv文件每行数据倒数出现的第n个逗号,可对其进行替换等操作。
Linux
换行编码标准化
sed 's/r$//'
file.csv > file2.csv
这个sed
命令用于移除CSV文件中的行尾回车符(r
)。有些情况下,文件中存在linux换行符和windows换行符,都需要进行处理。具体来说,它执行以下操作:
s/r$//
: 这是一个替换命令,它使用正则表达式匹配行尾的回车符 (r
)。$
: 表示行尾。r
: 表示回车符。//
: 表示替换为空字符串,即移除匹配到的回车符。
因此,这个sed
命令的目的是将CSV文件中每行的行尾回车符移除。例如,如果CSV文件在Windows环境下编辑过,可能包含回车符,使用这个命令可以将其删除,得到一个没有行尾回车符的文件。
最后,file.csv > file2.csv
将输出重定向到名为 file2.csv
的文件中,以保存修改后的结果。
删除所有linux换行符
tr -d 'n' < input.txt > output.txt
这个tr
命令用于删除文本文件 input.txt
中的所有换行符,并将结果输出到 output.txt
文件中。命令的解释如下:
tr
: 是用于转换或删除字符的命令。-d 'n'
: 表示删除(即不保留)换行符 (n
)。< input.txt
: 表示从input.txt
文件中读取输入。> output.txt
: 表示将输出写入到output.txt
文件中。
因此,这个命令的效果是将 input.txt
中的文本内容合并成一行,删除了原有的换行符,然后将结果保存到 output.txt
文件中。
匹配正数第2个逗号
sed 's/,/,"/2' t3.csv > output.txt
这个sed
命令用于将CSV文件 t3.csv
中每行的第二个逗号后的内容替换为 ,"
,并将结果输出到 output.txt
文件中。具体解释如下:
s/,/,"/2
: 这是一个替换命令,使用正则表达式匹配每行的第二个逗号(,
),并将其替换为逗号后紧跟着,"
。t3.csv
: 输入文件的名称。> output.txt
: 将结果输出到output.txt
文件中。
这个命令的效果是在每行的第二个逗号后插入 ,"
。请确保在执行命令之前备份文件,以免不可逆的更改。
匹配文件中特定字符为换行符
代码语言:javascript复制sed 's/A4401/
A4401/g' t2.csv > output.txt
这个sed
命令的目的是将CSV文件 t2.csv
中的每个匹配到的 “A4401” 替换为新的行(换行符 A4401),并将结果输出到 output.txt
文件中,用于处理分隔符导致的行错。
具体解释如下:
-
s/A4401/ A4401/g
: 这是一个替换命令,使用正则表达式匹配每个 “A4401”,并将其替换为换行符(回车,具体视环境而定) A4401。
g
表示全局替换,即一行中所有匹配的都会被替换。 -
t2.csv
: 输入文件的名称。 -
> output.txt
: 将结果输出到output.txt
文件中。
这个命令可以在Unix/Linux环境中运行。如果在Windows环境中,请确保替换命令中的 回车
部分是有效的换行符表示法。
以身份证号
为每行开头
sed -i 's/,([0-9]{17}[0-9X]|^[0-9]{15}),/n1,/g' your_file.txt
这个sed
命令的目的是在CSV文件 your_file.txt
中匹配到 ,
后面是17位数字或15位数字(带换行符),然后在匹配到的部分之前插入换行符,用于提取身份证号。
具体解释如下:
-
s/,([0-9]{17}[0-9X]|^[0-9]{15}),/n1,/g
: 这是一个替换命令,使用正则表达式匹配每个逗号后面是17位数字或15位数字的部分,并在匹配到的部分之前插入换行符。 -
,
: 逗号是匹配的目标。 -
([0-9]{17}[0-9X]|^[0-9]{15})
: 这是一个分组,匹配17位数字或者以行首^
开始的15位数字。 -
n1,
:n
表示换行符,1
表示匹配到的内容(17位数字或15位数字),,
表示替换后插入逗号。 -
g
: 表示全局替换,即一行中所有匹配的都会被替换。 -
-i
: 表示直接在原文件上进行替换操作。 -
your_file.txt
: 输入文件的名称。
切割文件以内存大小
split -C 9M input.txt output_prefix 该命令是用于将文件
input.txt切分成每份大小为9M的部分,并以
output_prefix` 为前缀命名切分后的文件。
split -C 9M input.txt output_prefix
: 这个命令使用split
工具,其中:-C 9M
: 指定每份切分的大小为9M。input.txt
: 要切分的输入文件。output_prefix
: 切分后的文件名的前缀。
例如,切分后的文件可能会以 output_prefixaa
, output_prefixab
, output_prefixac
等命名。
这个命令是按照文件的字节大小来进行切分的,并不会破坏文件的行结构。如果需要按照行来切分,可以使用 -l
选项,例如 split -l 1000 input.txt output_prefix
,这样就会将文件每1000行切分成一个部分。
匹配到特定字符串,12345678,
后,添加换行符
sed -i 's/(,[0-9]{8},)/1n/g' file.csv
这个sed
命令的目的是在CSV文件 file.csv
中匹配到逗号后面是8位数字的部分,然后在匹配到的部分之后插入换行符。
具体解释如下:
-
s/(,[0-9]{8},)/1n/g
: 这是一个替换命令,使用正则表达式匹配每个逗号后面是8位数字的部分,并在匹配到的部分之后插入换行符。 -
,
: 逗号是匹配的目标。 -
([0-9]{8})
: 这是一个分组,匹配8位数字。 -
1n
:1
表示匹配到的内容(逗号后的8位数字),n
表示换行符。 -
g
: 表示全局替换,即一行中所有匹配的都会被替换。 -
-i
: 表示直接在原文件上进行替换操作。 -
file.csv
: 输入文件的名称。