使用 awk 或 sed 更改路径
Change path using awk or sed
您好,我想将符号链接路径更改为 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
在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
注意事项:
- quote your variables,每一次。
- 不要使用 ALLCAPS 变量名,它会
- 请注意,输出重定向已移至 while 循环的外部,就像输入重定向一样
IFS= read -r line
是从文件中准确读取行的方法。
我不知道这是否会更快:bash 可能会很慢,特别是对于大文件的 while read
循环。您可以试试其他语言:
perl -MCwd=abs_path -pe 's/^SF:\K(.*)/ abs_path() /e' total.info > new1.info
您好,我想将符号链接路径更改为 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
在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
注意事项:
- quote your variables,每一次。
- 不要使用 ALLCAPS 变量名,它会
- 请注意,输出重定向已移至 while 循环的外部,就像输入重定向一样
IFS= read -r line
是从文件中准确读取行的方法。
我不知道这是否会更快:bash 可能会很慢,特别是对于大文件的 while read
循环。您可以试试其他语言:
perl -MCwd=abs_path -pe 's/^SF:\K(.*)/ abs_path() /e' total.info > new1.info