Regex 如何在awk中使用gsub查找和替换文件中的(";/";)和(";.txt";)字符

Regex 如何在awk中使用gsub查找和替换文件中的(";/";)和(";.txt";)字符,regex,unix,awk,gsub,Regex,Unix,Awk,Gsub,我想使用sub和awk从文件中删除字符“/”和“.txt” 这是我的输入在文件中的外观 ./file_name.txt|1230 我希望输出是 file_name|1230 到目前为止,这就是我所写的。我将使用这个gsub的输出并将其传递给awk并打印它。除了这个,我的其余代码都正常工作 gsub ( "[./txt]","" ) 改用gsub,记住像\和/那样转义。和\/: $ echo "./file_name.txt|1230" | awk '{gsub(/\.\/|\.txt/

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

这是我的输入在文件中的外观

./file_name.txt|1230
我希望输出是

  file_name|1230
到目前为止,这就是我所写的。我将使用这个gsub的输出并将其传递给awk并打印它。除了这个,我的其余代码都正常工作

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

改用
gsub
,记住像
\
/
那样转义
。和
\/

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

既然你说你需要替换一个你可以使用的文件

awk '{gsub(/\.txt|\.\//, "")}1'  file_name > tmp && mv tmp file_name
或者你可以使用更简单的
gawk

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

解释语句末尾的
1
的含义。

您提到了
awk
,另一个答案已经给出了答案,但这里有一种方法可以使用
sed
实现这一点:

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

sed的| \./| g;s | \.txt | g'
“/”
不是字符,而是字符串。与
“.txt”
相同。类似于
[…]
的括号表达式用于字符。@Ed Morton-Thank。我应该使用圆括号()而不是方括号吗?请参阅@JamesBrown的答案。downvoter,请解释为什么我被否决了?如果是关于转义
/
,我已经修复了它。通过链接可以帮助解释
1
的含义。谢谢你。