コマンドラインから各行の最初と最後の文字を削除する

コマンドラインから各行の最初と最後の文字を削除する

テキストファイルから各行の最初と最後の文字を削除し、結果の切り捨てられたバージョンを新しいファイルに保存しようとしています。awk大容量ファイルのために特別に他のLinuxプログラム/コマンドを使用してこれを効率的に実行する方法を知っている人はいますか?

入力.txt

(s,2,4,5,6)
"s,1,5,5,2"
{z,0,4,5,3}
[y,2,4,5,5]
(y,4,4,5,7)
(r,20,4,5,7)
(e,9,4,5,2)

期待される出力.txt

s,2,4,5,6
s,1,5,5,2
z,0,4,5,3
y,2,4,5,5
y,4,4,5,79
r,20,4,5,7
e,9,4,5,2

答え1

このための別の方法は次のとおりです。

rev input | cut -c2- | rev | cut -c2-

(注:GNUの場合cut(あなたの例のように)、1バイトのみで構成された文字でのみ機能します。)

答え2

あなたの質問に応じて、入力ファイルから最後の単語と最初の単語を次のように削除します。

sed 's/.$//; s/^.//' inputfile

答え3

いつものように、可能性はたくさんあります

sed 's,.\(.*\).$,\1,g' your_file

説明する

  • ,- sed区切り文字は、必要に応じてエスケープされる限り、他の文字でもかまいません。
  • .単一文字の一致
  • \(.*\)- 残りの部分をグループ化し、さらなる検索のためにアーカイブします。
  • .単一文字を再マッチします。
  • $- 行末
  • \1- 上記のグループに一致するテキスト出力
  • gグローバルに交換するだけです。

答え4

awk必要に応じてこれを行うこともできます。

awk '{print substr($0,2,length()-2);}' input.txt > output.txt

関連情報