如何通过参数去除字符?

如何通过参数去除字符?

我要过滤任何逗号和任何某些命令的输出中的双引号。对于一些条目。

伪代码:

removechar --any -, -"

电流输出可能类似于以下任何一个

lorem, ipsum " 多洛 ,"
",,lorem,, ipsum ,,, """ 多洛 ","
,lorem ipsum ,,, """ 多洛 ,

期望的输出:


洛雷姆·伊普苏姆·多洛尔 洛雷姆·伊普苏姆·多洛尔 洛雷姆·伊普苏姆·
多洛尔

更新

我可能还需要删除任何多余的空白字符,例如:

a, b" 

会变成

ab

问题

如何通过参数去除字符?

答案1

你可以使用tr

<input tr -d ',"' >output

或者,删除逗号和引号字符挤压相邻的空间(如您想要的输出所示)

<input tr -d ',"' | tr -s ' ' >output

或者更一般地删除所有标点符号并挤压所有水平空白

<input tr -d '[:punct:]' | tr -s '[:blank:]' >output

答案2

您需要研究sed, 以及非常基本的正则表达式。

sed  's/[, \'"´`]//g'

有语法

sed  's/[, \'"´`]//g'
      ^-------------- s like search&replace
       ^------------- the thing we want to search for and what we 
                      replace it with are separated by /
        ^-------^---- [] in a regular expression means
                      "any of the things in these []"
         ^^^^^^^----- in this case, the things to replace are commas,
                      spaces, single quotes, double quotes, slanted
                      quotes
                 ^--- next thing is what we replace it with
                  ^-- we replace with nothing
                   ^- g is an option that means
                      "repeat until you're done on each line"

答案3

类似的东西可以完成这项工作:

 sed 's/"//g; s/,//g' input_file >output_file

相关内容