如何在awk中使用gsub来查找和替换文件中的(“./”)和(“。txt”)字符

时间:2018-05-09 02:55:59

标签: regex unix awk gsub

我想使用sub和awk从我的文件中删除字符“ ./ ”和“ .txt

这是我的输入在文件中看到的内容

./file_name.txt|1230

我希望输出为

  file_name|1230

到目前为止这是我写的。我将使用此gsub的输出并将其传递给awk并打印它。除了这个,我的代码的恢复正在工作。

gsub ( "[./txt]","" )

3 个答案:

答案 0 :(得分:3)

请改为使用gsub,并记住要逃离./,例如\.\/

$ echo "./file_name.txt|1230" | awk '{gsub(/\.\/|\.txt/,"")}1'
file_name|1230

答案 1 :(得分:0)

由于您说您需要替换可以使用的文件,

awk '{gsub(/\.txt|\.\//, "")}1'  file_name > tmp && mv tmp file_name

或者您可以使用更简单的gawk

gawk -i inplace '{gsub(/\.txt|\.\//, "")}1' file_name

This answer解释了语句结尾处1的含义。

答案 2 :(得分:0)

你提到了awk而另一个答案已经回答了,但是你可以用sed来做到这一点:

sed 's|\./||g; s|\.txt||g' <<< "./file_name.txt|1230"