줄 앞에 x/를 추가합니다. 여기서 x는 각 줄의 변수입니다.

줄 앞에 x/를 추가합니다. 여기서 x는 각 줄의 변수입니다.

형식 ( 무시할 텍스트와 숫자가 혼합된 형식) $x/의 데이터를 추가하고 싶습니다 .$x-xyzxyz

샘플 데이터

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

관련 정보