이 정확한 데이터가 파일에 아직 없는 경우 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"
일치하도록 패턴을 설정하면
sed
sed를 사용하여
$ {…}' 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