Regex 如何在awk中使用gsub查找和替换文件中的(";/";)和(";.txt";)字符
我想使用sub和awk从文件中删除字符“/”和“.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/
./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
的含义。谢谢你。