问题是我的应用程序试图在/system/csc中向现有的xml文件添加一行。我需要一个函数来检查文件中是否有X行,如果有,则不应添加该行,还必须将该行放在文件中存在的另一行之前。
/system/csc
bvuwiixz1#
您可以使用grep检查该行是否已存在,如果不存在,则使用sed插入该行:
grep
sed
grep -Fxq "foobar line" file || sed -i '/^context line$/i foobar line' file
如果在文件中找不到foobar line,则会在context line行之前插入foobar line行。或者,您也可以使用sed来完成这一切:
foobar line
context line
sed -i '/^foobar line$/d;/^context line$/i foobar line' file
3gtaxfhh2#
尝试
grep -F "$yourLine" file.xml
cyvaqqii3#
awk sum up multiple files show lines which does not appear on both sets of files在此页上检查我的答案(我自己问题的最后一个答案)我正在使用艾德,在找到需要添加条目的行后,我使用典型的vi命令在行号后添加条目。如果没有,可以在对文件中的string执行grep后使用相同的脚本
grep pattern $file > /dev/null if [ $? = 0 ]; then echo "found" else run_ed_function fi
u59ebvdq4#
检查字符串是否等于整行
FILE="./myfile" STRING="myString" if grep -x ^$STRING.$ $FILE; then echo 'Found' else echo 'Not Found' fi
在这种情况下,代码将匹配“myString”,但不匹配“Hello myString”
4条答案
按热度按时间bvuwiixz1#
您可以使用
grep
检查该行是否已存在,如果不存在,则使用sed
插入该行:如果在文件中找不到
foobar line
,则会在context line
行之前插入foobar line
行。或者,您也可以使用
sed
来完成这一切:3gtaxfhh2#
尝试
cyvaqqii3#
awk sum up multiple files show lines which does not appear on both sets of files在此页上检查我的答案(我自己问题的最后一个答案)我正在使用艾德,在找到需要添加条目的行后,我使用典型的vi命令在行号后添加条目。
如果没有,可以在对文件中的string执行grep后使用相同的脚本
u59ebvdq4#
检查字符串是否等于整行
在这种情况下,代码将匹配“myString”,但不匹配“Hello myString”