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
$2
OFS
이는 으로 설정되는 효과를 가지며 $1 = $2 = $3 = ""
선행 s는 제거됩니다(인덱싱은 1에서 시작됩니다).$0
OFS OFS OFS $4 OFS $5 ...
substr
OFS
awk