区切り文字ベースの値で最初のフィールドを印刷する方法

区切り文字ベースの値で最初のフィールドを印刷する方法

ファイル(myfile.txt)には次のデータが含まれています。

abc#ab1=23
nrt#
#clb1aX
amd#322

希望の出力:

abc
nrt
clb1ax
amd

私はこれを行うことができます

for i in `cat myfile.txt` 
do 
  s1=`echo $i | cut -d'#' -f1`; 
  s2=`echo $i | cut -d'#' -f2`; 
  if [ "$s1" == "" ]; then 
    echo "$s2" 
  else
    echo "$s1"
  fi;
done;

forifしかし、1行にawkorまたはsed何かを使用するのと同じように、andを使用せずにこれを行う方法はありますか?cut

ベストアンサー1

短いawk解決策:

awk -F'#' 'NF{ print ($1 != "" ? $1 : $2) }' file

出力:

abc
nrt
clb1aX
amd

おすすめ記事