如何在 awk 中使用 gsub 查找和替换文件中的 ("./") 和 (".txt") 字符
How to use gsub in awk to find and replace ("./") and (".txt") characters within a file
我想使用 sub 和 awk[=13= 从我的文件中删除字符“./”和“.txt” ]
这是我的输入在文件中的样子
./file_name.txt|1230
我希望输出为
file_name|1230
到目前为止,这就是我所拥有的 written.I 将使用此 gsub 的输出并将其传递给 awk 并打印 it.Rest 我的代码正在运行,除了这个。
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
This answer 解释了语句末尾 1
的含义。
你提到了 awk
并且其他答案已经回答了它但是你可以通过 sed
:
来做到这一点
sed 's|\./||g; s|\.txt||g' <<< "./file_name.txt|1230"
我想使用 sub 和 awk[=13= 从我的文件中删除字符“./”和“.txt” ]
这是我的输入在文件中的样子
./file_name.txt|1230
我希望输出为
file_name|1230
到目前为止,这就是我所拥有的 written.I 将使用此 gsub 的输出并将其传递给 awk 并打印 it.Rest 我的代码正在运行,除了这个。
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
This answer 解释了语句末尾 1
的含义。
你提到了 awk
并且其他答案已经回答了它但是你可以通过 sed
:
sed 's|\./||g; s|\.txt||g' <<< "./file_name.txt|1230"