!["item,item,...|tag" 목록에서 "item tag" 쌍 생성 [닫기]](https://linux55.com/image/26178/%22item%2Citem%2C...%7Ctag%22%20%EB%AA%A9%EB%A1%9D%EC%97%90%EC%84%9C%20%22item%20tag%22%20%EC%8C%8D%20%EC%83%9D%EC%84%B1%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
입력 데이터의 특성:
- 각 줄은 파이프 "|"로 구분된 두 개의 필드로 구성됩니다.
- 첫 번째 필드는 쉼표로 구분된 항목 목록입니다.
- 두 번째 필드는 레이블입니다.
입력하다
100,210,354,462|acct
331,746,50|mis
90,263,47,14|sales
산출
100acct
210acct
354acct
462acct
331mis
746mis
50mis
90sales
263sales
47sales
14sales
답변1
항목에 "|"가 포함되어 있지 않고 태그에 ","가 포함되어 있지 않다고 가정합니다.
awk -F '[,|]' '{for(i=1;i<NF;i++)print$i$NF}' input.txt
답변2
PERL 그럴까요?
$ perl -ne 'chomp; @a=split(/\|/); @b=split(/,/,$a[0]); map{print "$_$a[1]\n"}@b' input.txt
답변3
순수 sed 솔루션:
sed ':a;s/\(.*\),\([^,]*\)|\(.*\)/\2\3\n\1|\3/;ta;s/|//' input.file
답변4
말했다...
sed -e 's/^\([0-9][0-9]*\),.*|\(.*\)/\1\2/'
첫 번째 필드가 숫자가 아닌 경우 다음과 같이 변경할 수 있습니다.
sed -e 's/^\([^,][^,]*\),.*|\(.*\)/\1\2/'