echo 명령을 사용하여 파일에 쓰고 싶습니다. echo 명령은 다른 파일에서 데이터를 가져옵니다.
이것은 에코 명령입니다:
echo '{
name: $name
id: $seq
}
txt 파일이 있습니다.
customer 1
customer 2
customer 3
그래서 파일을 생성하고 echo를 수행하고 txt 파일의 첫 번째 줄에서 $name을 바꾸려고 합니다.
그런 다음 $seq의 시작 부분을 1로 바꿉니다.
제가 원하는 파일입니다.
{
name: customer 1
id: 1
}
{
name: customer 2
id: 2
}
{
name: customer 3
id: 3
}
첫 번째 행을 읽을 때 ID는 1이어야 하고 두 번째 행을 읽을 때 ID는 2여야 합니다.
답변1
노력하다
awk '{printf "{\n\tname: %s\n\tid: %d\n\t}\n",$0,NR}' file.txt
어디
printf
줄을 건너뛰고 탭과 형식 문자열이 추가됩니다.
매개변수 의 경우 id:
예제 파일의 두 번째 필드를 사용하거나 NR
줄 번호(즉, (레코드 수) 값)에서 필드를 생성할 수 있습니다.
답변2
올바른 JSON 형식의 출력을 원하는 경우:
jq -Rs 'split("\n") |
.[0:-1] |
[ foreach .[] as $customer ( 0; .+1; { name: $customer, id: . } ) ]' ./file
아니면 더 짧게,
$ jq -Rs '[ foreach split("\n")[0:-1][] as $customer ( 0; .+1; { name: $customer, id: . } ) ]' ./file
-Rs
형식화되지 않은 원시 텍스트를 단일 문자열로 읽습니다 . 이는 newlines 에서 배열을 분할 split("\n")
하고 배열 끝에 null 값이 있으므로 이를 제거합니다 .[0:-1]
(이렇게 하면 첫 번째부터 두 번째, 마지막까지 모든 요소가 선택됩니다).
질문과 동일한 입력 데이터를 사용하여 이제
[
"customer 1",
"customer 2",
"customer 3"
]
$customer
그런 다음 각 요소와 반복자를 사용하여 해당 배열의 값을 반복하고 그에 따라 및 키를 사용하여 .
개체 배열을 구성합니다 .name
id
밝혀지다
[
{
"name": "customer 1",
"id": 1
},
{
"name": "customer 2",
"id": 2
},
{
"name": "customer 3",
"id": 3
}
]