我有一個假脫機文件創建的文件。該文件的列由分隔符分隔:#@;
有沒有辦法找到分隔符之間的數據?我的意思是例如:查找下一個分隔符ksh
#@;Hello #@;World #@;!!!
我必須找到你好,那麼世界然後!!!我試過這種方式,但不起作用:
tp=${ENDFL##*@#}
HELLOSTRING=`printf '"%s"\n' "${tp%%#@;*}"`
任何想法?感謝
我有一個假脫機文件創建的文件。該文件的列由分隔符分隔:#@;
有沒有辦法找到分隔符之間的數據?我的意思是例如:查找下一個分隔符ksh
#@;Hello #@;World #@;!!!
我必須找到你好,那麼世界然後!!!我試過這種方式,但不起作用:
tp=${ENDFL##*@#}
HELLOSTRING=`printf '"%s"\n' "${tp%%#@;*}"`
任何想法?感謝
使用翻譯命令:
echo "#@;Hello #@;World #@;!!!" | tr '#@;' '^' | tr -s '^'
輸出:
Kaizen ~
$ echo "#@;Hello #@;World #@;!!!" | tr '#@;' '^' | tr -s '^'
^Hello ^World ^!!!
說明:
第一TR取代了 '#@;'用^分隔符,但是它會執行三次。
「#,@,;」是三個獨立的文字,因此它分別針對所有三個^
第二個tr抑制多重^發生。
因此,您得到一個^分隔的輸出爲「^ Hello^World^!!!」
對於你的文件只是貓的文件名然後管它到翻譯命令之後,你可以使用AWK,剪切或任何格式化或提取,根據你的需要。
如果你要處理一堆線
sed -e 's/#@;//g' input.dat
的要找到分離器之間的數據(假設你有一個變量的值由tp=
的建議)
echo "${tp/#@;/}"
如果你想使用零件
origIFS=$IFS # always kep the original $IFS save
IFS='§' # define a InputFieldSeparator which will not be used in your input
set ${tp//#@;/$IFS} # reduce separator to one char and set $1 ... based on that separator
IFS=$origIFS # and restore $IFS when you are done
echo "'$1' '$2' '$3' '$4'" # note that $1 is empty, it is before the first separator)
你可以使用'awk'和'-F'選項並打印適當的價值與'$ 1'等 - 但你最終要怎麼處理這些數據呢? – fge
類似'awk -F'「#@;」''{print $ 1}''?但是插入。 –
那寧願成爲'awk -F'#@;''。什麼「插入」? – fge