Linux 货币的 sed 正则表达式
Linux sed regex for currency
您好,我正在尝试从文本文件中删除除货币值以外的所有内容,例如:
0,013,033.43
,000.32
00
目前我一直在使用这个命令,但只删除所有不是数字的东西,比如“$,.”之类的字符。被忽略
sed 's/[^0-9]*//g' myfile.txt >> output.txt
grep -o '$[0-9,.]\+' myfile.txt >> output.txt
输出$
符号后的,
和.
的每一次出现。
如果你坚持sed
(主要是GNU sed版本):
sed 's/[^$]*\($[0-9,.]\+\)/\n/
T1
P
:1
D' myfile.txt >> output.txt
对于每一行,尝试替换除 $
([^$]*
) 之外的任何符号集和数字集,,
和 .
之后 $
符号由最后一部分 + n
新行。如果替换没有执行(行中没有上面的模式)传递到 1
点,否则打印从开始到第一个 \n
新行符号(即所需集)的部分行。下一个操作D
删除从开始到第一个行的部分\n
新行符号,如果该行或整行中存在并从头开始操作。因此,如果模式为空(整行已被删除)脚本转到下一行,否则继续使用当前行的剩余部分进行操作。
或更简单(可能)
sed -n '/$[0-9,.]\+/{
s/[^$]*\($[0-9,.]\{1,\}\)[^$]*/\x0a/g
s/\n$//
p
}' myfile.txt >> output.txt
-n
禁止自动打印模式 space(仅打印由 p
rint 指示的行)
/$[0-9,.]\+/ {
下一个命令仅适用于包含数字集的行,,
和 .
跟随 $
符号
s/[^$]*\($[0-9,.]\{1,\}\)[^$]*/
以上集合连同前后任何符号($
除外)将被s
代入
\x0a/
创建集+\n
新行
g
每次出现
以上操作可能会出现空行,所以s/\n$//
已删除
您好,我正在尝试从文本文件中删除除货币值以外的所有内容,例如:
0,013,033.43
,000.32
00
目前我一直在使用这个命令,但只删除所有不是数字的东西,比如“$,.”之类的字符。被忽略
sed 's/[^0-9]*//g' myfile.txt >> output.txt
grep -o '$[0-9,.]\+' myfile.txt >> output.txt
输出$
符号后的,
和.
的每一次出现。
如果你坚持sed
(主要是GNU sed版本):
sed 's/[^$]*\($[0-9,.]\+\)/\n/
T1
P
:1
D' myfile.txt >> output.txt
对于每一行,尝试替换除 $
([^$]*
) 之外的任何符号集和数字集,,
和 .
之后 $
符号由最后一部分 + n
新行。如果替换没有执行(行中没有上面的模式)传递到 1
点,否则打印从开始到第一个 \n
新行符号(即所需集)的部分行。下一个操作D
删除从开始到第一个行的部分\n
新行符号,如果该行或整行中存在并从头开始操作。因此,如果模式为空(整行已被删除)脚本转到下一行,否则继续使用当前行的剩余部分进行操作。
或更简单(可能)
sed -n '/$[0-9,.]\+/{
s/[^$]*\($[0-9,.]\{1,\}\)[^$]*/\x0a/g
s/\n$//
p
}' myfile.txt >> output.txt
-n
禁止自动打印模式 space(仅打印由p
rint 指示的行)/$[0-9,.]\+/ {
下一个命令仅适用于包含数字集的行,,
和.
跟随$
符号s/[^$]*\($[0-9,.]\{1,\}\)[^$]*/
以上集合连同前后任何符号($
除外)将被s
代入\x0a/
创建集+\n
新行g
每次出现
以上操作可能会出现空行,所以s/\n$//
已删除