검색 결과에서 sed를 사용하여 파일 목록의 텍스트를 바꿉니다.


1

주어진 다음 명령을 찾습니다 : 찾아라. | xargs grep 'userTools'-sl

어떻게 그 명령의 결과에 sed를 사용할 수 있습니까?

산출:

./file1.ext
./file2.ext
./file3.ext

원하는게 뭐야? sed 할 것?
Dennis Williamson

네, 전에 분명히하지 못해 죄송합니다. 목록에있는 각 파일의 내용을 대체하려면 sed가 필요합니다.
Kyle Hayes

답변:


4

나는 당신이 어떤 것을 수행하기를 원한다고 가정하고있다. sed 파일 이름 목록보다는 각 파일의 내용에 대한 작업을 이미 수행 한 방법을 알고있는 것 같습니다. 대답은 부분적으로는 버전에 달려 있습니다. sed 당신은 사용할 수 있습니다. 지원하는 경우 -i 옵션 (파일을 제자리에서 편집)을 사용하면 xargs 다시 이렇게 :

find . | xargs grep 'userTools' -sl | xargs -L1 sed -i 's/this/that/g'

네가 sed ~을 가지고 있지 않다. -i 옵션 대신 다음과 같이 할 수 있습니다.

find . | xargs grep 'userTools' -sl | while read file
do
sed 's/this/that/g' "$file" > tmpfile
mv tmpfile "$file"
done

1
find . -print0 | xargs -0 grep -slZ 'userTools' | xargs -0 sed -i 's/foo/bar/'

또는

find . -print0 | xargs -0 sed -i '/userTools/ s/foo/bar/'

또는

ack -l --print0 'userTools' | xargs -0 sed -i 's/foo/bar/'

1
find \Path_where_files_are -type f -name 'file_type' -exec  sed -e 's/"text_to_be_changed"/"text_to_be_changed_to"/' {} +
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.