1

次のように、シェルまたは任意のスクリプトを使用して、myfolder で使用可能なすべての txt ファイルを変更したいと思います

 test = data(x, y);

test = data(z,x,y);  // by adding z

と :

 test.value(f1, "directory_1/directory_2/directory_3/file");

test.value(f1, "/directory_3/file"); // by removing directory_1/directory_2
4

2 に答える 2

1
cd myfolder
for FILE in *txt ; do
    sed -i 's/test = data(x,\s*y);/test = data(z,x,y);/;/test.value(f1, "/s="[^/]*/[^/]*\(/[^/]*/[^/]*");\)$=\1=;' "$FILE"
done

sed が GNU でない場合は、次を使用します

cd myfolder
for FILE in *txt ; do
    sed 's/test = data(x, y);/test = data(z,x,y);/test.value(f1, "/s="[^/]*/[^/]*\(/[^/]*/[^/]*");\)$=\1=;' "$FILE" > "$FILE.tmp"
    mv "${FILE}.tmp" "$FILE"
done
于 2012-08-14T13:18:42.293 に答える
1

bash で sed を使用する:

for i in *.txt; do
  if [ -f $i ]; then
    sed -i 's!test = data(\s*x,\s*y)!test = data(z,x,y)!' "$i"
    sed -i 's!test.value(f1, "[^/]*/[^/]*\(/[^"]*\)");!test.value(f1, "\1");!' "$i"
  fi  
done
于 2012-08-14T13:18:06.893 に答える