您好,我想将符号链接路径更改为txt文件中的实际路径。 首先,我找到单词“ SF:”并更改路径。 现在,我使用此脚本,但是它很慢且无效。 我认为可以通过awk或sed命令更改它。 预先谢谢你。
#!/bin/bash
FILENAME="new1.info"
echo "" > $FILENAME
while read LINE
do
if [ "" != "$(echo $LINE | grep -e "^SF:")" ]
then
echo "SF:""$(realpath $(echo $LINE | cut -d":" -f2))" >> $FILENAME
else
echo $LINE >> $FILENAME
fi
done < total.info
我有一个很大的txt文件,所以我想找到“ SF:”并更改类似这样的行:
SF:/home/ects/svn/moduleTests/ctest/tests/moduletests/base/tmp/src/base64.cpp
对此:
SF:/home/ects/svn/moduleTests/ctest/src/base/base64.cpp
答案 0 :(得分:1)
在bash中,我会写
#!/bin/bash
while IFS= read -r line; do
if [[ "$line" == "SF:"* ]]; then
line="SF:$(realpath "${line#SF:}")"
fi
echo "$line"
done < total.info > new1.info
注意事项:
IFS= read -r line
是从文件中精确读取行的方法。我不知道这样做是否会更快:bash可能会非常慢,尤其是while read
遍历大文件时。您可以尝试其他语言:
perl -MCwd=abs_path -pe 's/^SF:\K(.*)/ abs_path($1) /e' total.info > new1.info