次のIDと名前を含むファイルがあります。
1234|abc|cde|fgh
5678|ijk|abc|lmn
9101|cde|fgh|klm
1213|klm|abc|cde
次の内容のみを含むファイルが必要です一意の名前リストとして。
結果ファイル:
abc|sysdate
cde|sysdate
fgh|sysdate
ijk|sysdate
lmn|sysdate
klm|sysdate
ここで、sysdateは現在の処理タイムスタンプです。
答え1
cut -f2- -d\| file.txt | tr \| '\n' | sort -u | sed 's/$/|sysdate/'
cut
入力から列を抽出し、-d
使用する区切り文字を指定し、-f
目的の列を指定します。したがって、ここではシェルで特別な意味を持つ|
ため、バックスラッシュが必要な区切り文字で2から始まる各列を抽出します。|
tr
音訳(つまり、|
すべて改行文字に置き換え)sort -u
重複項目の並べ替えと削除sed
s///
代替品です。ここで$
行末( )を次に置き換えます。|sysdate
実際の日付を含めるには、最後の項目を次に変更します。
sed 's/$/|'"$(date)"/
その中には、$()
コマンドを出力に置き換えるコマンド置換があります。