![Bash:如何从行中删除字符](https://linux22.com/image/151905/Bash%EF%BC%9A%E5%A6%82%E4%BD%95%E4%BB%8E%E8%A1%8C%E4%B8%AD%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6.png)
有一个包含数据的表。
./result_4_0.txt
./result_4_45.txt
./result_4_45.txt
./result_4_0.txt
我想从数字创建两列。如何仅用空格替换“./result_”“_”“.txt”。我在 sed 之前尝试过,但它不能与点或斜杠一起使用。
file="filename.txt"
while IFS= read line
do
done <"$file"
答案1
sed
与点和斜线完美配合。你只需要逃避这些:
sed 's/\(\.\/result_\|_\)/ /g' filename.txt
或者,如果你想要更多的可读性,类似的东西也可以:
sed 's=\./result_= =;s=_= =' filename.txt
答案2
$ tr -dc "\n0-9_" < input | awk -F_ '{print $2,$3}'
4 0
4 45
4 45
4 0