awk는 n번째 열부터 마지막 ​​열까지 인쇄합니다.

awk는 n번째 열부터 마지막 ​​열까지 인쇄합니다.

nth에서 까지 행의 last모든 ​​열을 인쇄하고 싶습니다 .

파일에 문자열 입력

vddp vddpi vss cb0 cb1 cb2 cb3 ct0 ct1 ct2 ct3  

주문하다

cat <file> | awk ' { for (i=3; i<=NF; i++)   print $i }'

전류 출력

cb0
cb1
cb2
cb3
ct0
ct1
ct2
ct3

원하는 출력

cb0 cb1 cb2 cb3 ct0 ct1 ct2 ct3

나는 노력하고있다반복하지만 원하는 출력을 얻을 수 없습니다.

답변1

awk -v n=4 '{ for (i=n; i<=NF; i++) printf "%s%s", $i, (i<NF ? OFS : ORS)}' input

이것은 n을 값으로 취하고 n마지막 필드를 통해 숫자를 반복합니다 NF. 각 반복마다 현재 값을 인쇄합니다. 행의 마지막 값이 아닌 경우 OFS그 뒤에 공백을 인쇄합니다. 다음에 인쇄 될 ORS줄의 마지막 값 (개행 문자)입니다.

$ echo 'vddp vddpi vss cb0 cb1 cb2 cb3 ct0 ct1 ct2 ct3' |
> awk -v n=4 '{ for (i=n; i<=NF; i++) printf "%s%s", $i, (i<NF ? OFS : ORS)}'
cb0 cb1 cb2 cb3 ct0 ct1 ct2 ct3

답변2

요청하신 방법으로는 질문에 대한 답변 이 없으나 , 본 작업에 활용될 수 있음 awk을 알려드리는 것 뿐입니다 .cut

cut -f4- -d' ' input

답변3

주문하다

awk '{$1=$2=$3="";print $0}' filename| sed -r "s/^\s+//g"

주문하다

cb0 cb1 cb2 cb3 ct0 ct1 ct2 ct3

답변4

$1=$2=$3=""사용되는 기술의 개선어느 FS또는 OFS출력 행이 $4 OFS $5 OFS ...허용 가능하도록 정규화된 경우:

awk 'BEGIN{p=length(OFS)*3+1} {$1=$2=$3="";print substr($0,p)}'

$1=""필드(예: 또는 )에 값을 할당하면 $1=$1, , ... 필드를 변수와 연결하여 (전체 레코드/행) $0이 (처음 사용 시) 재구성됩니다 .$1$2OFS

이는 으로 설정되는 효과를 가지며 $1 = $2 = $3 = ""선행 s는 제거됩니다(인덱싱은 1에서 시작됩니다).$0OFS OFS OFS $4 OFS $5 ...substrOFSawk

관련 정보