아직 문자열 데이터가 없으면 여기에 문자열 데이터를 파일에 추가합니다(모두 한 줄에 있음).

아직 문자열 데이터가 없으면 여기에 문자열 데이터를 파일에 추가합니다(모두 한 줄에 있음).

이 정확한 데이터가 파일에 아직 없는 경우 herestring을 사용하여 파일 끝에 데이터 줄을 추가하는 "우아한" 한 줄 방법은 무엇입니까?

이것은 내 문자열 추가 패턴입니다.

cat >> /var/www/html/myFile <<< "myOutput"

답변1

s="myOutput"; grep -Fxqe "$s" < "$file" || printf "%s\n" "$s" >> "$file"

답변2

"myOutput"이 파일의 마지막 줄 전체가 되기를 원한다고 가정해 보겠습니다.

s="myOutput"; sed '$ {/^'"$s"'$/b; s/$/\n'"$s"'/}' file

s="myOutput"일치하도록 패턴을 설정하면
sedsed를 사용하여
$ {…}' file파일의 마지막 줄에 있는
/^'"$s"'$/b전체 줄로 패턴을 일치시키고 , 일치하면 끝까지 분기합니다.
s/$/\n'"$s"'/일치하는 항목이 없으면 패턴이 마지막 줄에 추가됩니다.

파일의 마지막 줄이 아닌 다른 곳에 이미 "myOutput" 데이터가 포함되어 있는 경우 해당 파일의 다른 복사본이 파일 끝에 추가됩니다.

답변3

다음 스크립트에서는 전체 마지막 줄 변수 i가 존재하는지 확인하고, 그렇지 않은 경우 파일의 마지막 줄에 변수 i를 삽입합니다.

테스트 후 효과는 매우 좋습니다

#!bin/bash
i="praveen"
f=$(sed -n '$p' p.txt  | sed -n "/^$i$/p")
if [[ -z $f ]]
then
sed "\$s/.*/&\n$i/g" p.txt
else
echo "output exsists"
fi

관련 정보