사용자 이름, 테이블에서의 위치, 설정할 새 값을 수신하려면 함수를 설정해야 합니다. 테이블세트는
user:value1:value2:value3
바꾸기를 사용하는 방법을 알고 있지만 awk '{gsub...
특정 사용자에게 이를 지정하는 방법을 모르겠습니다.
답변1
먼저 문제의 파일이 /etc/passwd
,아니요이 솔루션을 사용하십시오 usermod
.
newvalue2
세 번째 필드를 for 으로 변환한다고 가정해 보겠습니다 user007
. 다음을 수행할 수 있습니다.
awk -F: -v OFS=: '$1 == "user007" {$3 = "newvalue2"} {print}' inputfile > outputfile
이 작업을 수행하기 위해 특별히 쉘 기능을 설정하고 싶다면 그렇게 할 수 있습니다. (개인적으로는 신경쓰지 않겠습니다.)
myfunc() {
[ "$#" -eq 2 ] ||
{ printf '%s\n' 'Usage: myfunc <USER> <GPA>' 'Assigns given GPA to USER (in column 5 of "~/students.dat")'
return 1;}
local mytempfile
mytempfile="$(mktemp)"
awk -F: -v OFS=: -v user="$1" -v gpa="$2" '$1 == user {$5 = gpa} {print}' ~/students.dat > "$mytempfile" &&
mv "$mytempfile" ~/students.dat
}
그러나 이것은 실제 데이터에 대해 수행할 작업이 아니며,임시 또는 "장난감" 데이터에만 해당되며 나 외에는 누구에게도 쓸모가 없습니다. 생각보다 훨씬 더 취약합니다. CSV는 적절한 데이터베이스를 대체할 수 없습니다.
CSV 기반 솔루션을 사용하는 경우 적어도 위에 표시된 것보다 정기적인 백업과 더 나은 오류 검사가 있는지 확인하십시오. 예를 들어 제공된 "사용자" 이름의 유효성을 확인하거나 CSV 오류가 있는지 확인할 수 있습니다. 파일에서 사용자를 찾을 수 없거나 제공된 GPA에서 데이터 무결성 검사(예: 범위 검사)가 수행되는 경우 발생합니다. 그러나 이러한 모든 작업은 실제 데이터베이스를 사용하여 수행하는 것이 가장 좋습니다.
당신은 할 수PostgreSQL 샌드박스 설정아주 간단하게그리고 이를 사용하여 실제 데이터베이스와 이를 통해 수행할 수 있는 작업에 대해 자세히 알아보세요.