
다음과 같은 파일 스키마가 있습니다.
insert_buffer cell_a
insert_buffer cell_b
insert_buffer cell_b
...
각 행 끝에 열을 추가하고 숫자를 늘리고 싶습니다. 예를 들어 0,1,2,3...:
insert_buffer cell_a name_0
insert_buffer cell_b name_1
insert_buffer cell_b name_2
...
루프에 awk를 사용하는 방법은 무엇입니까? 아니면 다른 솔루션이 가능합니다.
답변1
$ awk '{$(NF+1) = "name_"(NR-1)} 1' file
insert_buffer cell_a name_0
insert_buffer cell_b name_1
insert_buffer cell_b name_2
내장된 레코드 count 대신 자신만의 변수를 사용하려면 NR
예를 들어 다음과 같습니다.
$ awk '{$(NF+1) = "name_"i++} 1' file
insert_buffer cell_a name_0
insert_buffer cell_b name_1
insert_buffer cell_b name_2
새 필드를 다른 곳에 삽입하려는 경우 한 가지 방법은 추가 출력 필드 구분 기호를 사용하여 기존 필드 앞에 추가하거나 OFS
두 번째 필드 앞에 삽입하는 것 입니다.
$ awk '{$2 = "name_"i++ OFS $2 } 1' file
insert_buffer name_0 cell_a
insert_buffer name_1 cell_b
insert_buffer name_2 cell_b
답변2
이는 주어진 편집기를 사용하여 수행할 수 있습니다 sed
:
sed
산술 개념이 없기 때문에 다른 방법으로 계산할 수 있습니다.
the variable $n stores the column number where you want the new data placed.
n=2;
sed -ne 1i\\ -e 0 -e p\;= yourfile |\
sed -nE "N;s/\S\+/&\n/$n;s/\(.*\)\n\(.*\)\n/\2 name_\1 /p"
결과
insert_buffer name_0 cell_a
insert_buffer name_1 cell_b
insert_buffer name_2 cell_c