표의 값 편집

표의 값 편집

사용자 이름, 테이블에서의 위치, 설정할 새 값을 수신하려면 함수를 설정해야 합니다. 테이블세트는

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 샌드박스 설정아주 간단하게그리고 이를 사용하여 실제 데이터베이스와 이를 통해 수행할 수 있는 작업에 대해 자세히 알아보세요.

관련 정보