형식 ( 무시할 텍스트와 숫자가 혼합된 형식) $x/
의 데이터를 추가하고 싶습니다 .$x-xyz
xyz
샘플 데이터
AB-10C
CD-02E
산출
AB/AB-10C
CD/CD-02E
하이픈 앞의 텍스트로 변수를 설명하는 방법은 무엇입니까? 내 의견은 다음과 같습니다.
define $x = # don't know how to do that
## and then somehow use sed to prepend
sed -i s/$/$x/ file
# I don't know if sed can handle variables though - the above one liner is from Googling
답변1
빠르고 더러운 awk
버전은 다음과 같습니다.
awk -F- '{print $1"/"$0}' input_file > output_file
이것이 하는 일은 -
필드 구분 기호 역할을 하며 첫 번째 열(즉, 첫 번째 열 이전의 모든 항목 -
)을 인쇄한 다음 를 인쇄 /
하고 전체 원래 행을 인쇄하는 것입니다.
동일한 작업을 수행하는 한 가지 방법 sed
은 다음과 같습니다.
sed -e 's;^\([^-]*\)\(.*\);\1/\1\2;' input_file > output_file
(하지만 읽기가 어렵습니다.)
이 작업을 간단하게 수행하려면 bash
다음을 사용할 수 있습니다.문자열 연산:
$ foo=AB-10C
$ prefix=${foo%%-*}
$ echo ${prefix}/${foo}
AB/AB-10C
while read
데이터가 파일에서 오는 경우 루프 또는 이와 유사한 방식으로 사용하세요.
답변2
이것은 당신에게 도움이 될 수 있습니다:
echo -e "123,AB-10C,4\n567,CD-02E,8" |
sed 's|\([^,]*\)-.*|\1/&|'
123,AB/AB-10C,4
567,CD/CD-02E,8